Endlich!
Ab Java 8u191 haben Sie nun die Möglichkeit dazu:
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage
die verwendet werden kann, um die Größe des Heaps als Prozentsatz des nutzbaren physischen RAM zu bestimmen. (der dem installierten RAM abzüglich des vom Kernel verwendeten entspricht).
参照 Versionshinweise für Java8 u191 für weitere Informationen. Beachten Sie, dass die Optionen unter einer Docker-Überschrift erwähnt werden, aber tatsächlich gelten sie sowohl in einer Docker-Umgebung als auch in einer herkömmlichen Umgebung.
Der Standardwert für MaxRAMPercentage
beträgt 25%. Dies ist äußerst konservativ.
Meine eigene Regel: Wenn Ihr Host mehr oder weniger auf die Ausführung der gegebenen Java-Anwendung ausgerichtet ist, dann können Sie ohne Probleme drastisch erhöhen. Wenn Sie Linux verwenden, nur Standard-Daemons laufen lassen und RAM von etwa 1 GB aufwärts installiert haben, würde ich nicht zögern, 75% für den Heap der JVM zu verwenden. Nochmals: Denken Sie daran, dass dies 75% des RAMs sind. verfügbar nicht der RAM installiert . Was übrig bleibt, sind die anderen Benutzerlandprozesse, die auf dem Host laufen können, und die anderen Arten von Speicher, die die JVM benötigt (z. B. für den Stack). Alles zusammen passt in der Regel gut in die verbleibenden 25 %. Mit noch mehr installiertem RAM sind die 75 % natürlich eine immer sicherere Wette. (Ich wünschte, die JDK-Leute hätten eine Option implementiert, mit der man eine Leiter angeben kann)
Einstellung der MaxRAMPercentage
Die Option sieht folgendermaßen aus:
java -XX:MaxRAMPercentage=75.0 ....
Beachten Sie, dass diese Prozentwerte vom Typ "double" sind und Sie daher debe sie mit einem Dezimalpunkt angeben. Sie erhalten eine etwas seltsame Fehlermeldung, wenn Sie "75" anstelle von "75.0" verwenden.