Wie lege ich die minimale und maximale Heap-Größe von Java über Umgebungsvariablen fest?
Ich weiß, dass die Heap-Größen beim Starten von Java festgelegt werden können, möchte dies jedoch über Umgebungsvariablen auf meinem Server anpassen.
java
environment-variables
heap
Jeff Thompson
quelle
quelle
Antworten:
Sie können Umgebungsvariablen nicht direkt verwenden. Sie müssen die "nicht standardmäßigen" Optionen verwenden, die an den Java-Befehl übergeben werden. Führen Sie: java -X für Details aus. Die Optionen, nach denen Sie suchen, sind -Xmx und -Xms (dies ist die "anfängliche" Heap-Größe, also wahrscheinlich das, wonach Sie suchen.)
Einige Produkte wie Ant oder Tomcat verfügen möglicherweise über ein Batch-Skript, das nach der Umgebungsvariablen JAVA_OPTS sucht, jedoch nicht Teil der Java-Laufzeit ist. Wenn Sie eines dieser Produkte verwenden, können Sie die Variable möglicherweise wie folgt festlegen:
set JAVA_OPTS="-Xms128m -Xmx256m"
Sie können diesen Ansatz auch mit Ihrer eigenen Befehlszeile wie folgt ausführen:
set JAVA_OPTS="-Xms128m -Xmx256m" java ${JAVA_OPTS} MyClass
quelle
JAVA_OPTS
Technik wird auch von den Skripten verwendet, die vom Maven Appassemble Plugin generiert werden.Wenn Sie möchten, dass ein
java
Prozess, nicht nur Ant oder Tomcat, Optionen wie-Xmx
die Umgebungsvariable verwendet_JAVA_OPTIONS
.In Bash:
export _JAVA_OPTIONS="-Xmx1g"
quelle
set _JAVA_OPTIONS=-Xmx1g
Um es dauerhaft zu machen, machen Sie eine neue Umgebungsvariable_JAVA_OPTIONS
und setzen Sie es auf-Xmx1g
Tatsächlich gibt es eine Möglichkeit, globale Standardwerte für die JVM von Sun über Umgebungsvariablen festzulegen.
Siehe So legen Sie eine Java-Systemeigenschaft fest, damit sie beim Starten von JVM wirksam wird, ohne sie den Befehlszeilenargumenten hinzuzufügen .
quelle
Sie können dies nicht mit Umgebungsvariablen tun. Dies erfolgt über "nicht standardmäßige" Optionen. Ausführen:
java -X
für Details. Die Optionen, nach denen Sie suchen, sind-Xmx
und-Xms
(dies ist die "anfängliche" Heap-Größe, also wahrscheinlich das, wonach Sie suchen.)quelle
Sie können verwenden
JAVA_TOOL_OPTIONS
.Beispiel:
Es wurde in einigen Kommentaren und in einer anderen Antwort erwähnt .
Die Frage des OP ist ziemlich alt, aber da es das erste Google-Ergebnis für die Frage ist, dachte ich, ich würde die Antwort hier aus Gründen der Klarheit hinzufügen.
quelle
Ich denke, Ihre einzige Möglichkeit besteht darin, Java in ein Skript zu verpacken, das die Umgebungsvariablen in die Befehlszeile einfügt
quelle
Ein paar Anmerkungen:
Apache Ant weiß nichts über JAVA_OPTS, während Tomcats Startskripte dies tun. Verwenden Sie für Apache ant ANT_OPTS, um die Umgebung für die JVM zu beeinflussen, auf der / ant / ausgeführt wird, nicht jedoch für die Dinge, die ant möglicherweise startet.
Die maximale Heap-Größe, die Sie festlegen können, hängt vollständig von der Umgebung ab: Bei den meisten 32-Bit-Systemen liegt der maximale Heap-Speicherplatz, den Sie unabhängig vom verfügbaren Speicher anfordern können, im Bereich von 2 GB. Der größte Haufen auf einem 64-Bit-System ist "wirklich groß". Außerdem sind Sie praktisch auch durch den physischen Speicher begrenzt, da der Heap von der JVM verwaltet wird und Sie nicht viel auf die Festplatte tauschen möchten.
In Serverumgebungen möchten Sie normalerweise -Xms und -Xmx auf denselben Wert setzen: Dadurch wird die Größe des Heapspeichers auf eine bestimmte Größe festgelegt, und der Garbage Collector hat weniger Arbeit zu erledigen, da der Heapspeicher nie erneut erstellt werden muss Größe.
quelle