Wie kann man die Größe des JAVA-Heapspeichers erhöhen?

7

Ich muss die Standardgröße des Java- Heapspeichers erhöhen, damit der OpenNMS Linkd- Dienst reibungslos funktioniert , und glücklicherweise habe ich zu jedem Zeitpunkt 4/5 meines gesamten installierten Speichers frei, selbst wenn der Server maximal ausgelastet ist. Java spielt immer noch nicht mit seinem Bast. Daher muss ich die Standardgröße des Java-Heaps erhöhen.

Kann mir jemand sagen, wie es geht?

Ich verwende Ubuntu 12.04 lts und der installierte Gesamtspeicher beträgt 16 GB, von denen im Allgemeinen 2 GB bis 4 GB verwendet werden.

Ich habe die folgenden Fragen bereits geprüft und sie haben mir nicht bei der Lösung meines Problems geholfen.

  1. Wie kann man den Java zugewiesenen Speicher erhöhen? java.lang.OutOfMemoryError: Java-Heapspeicher

  2. Vergleichen der Größe des virtuellen Speichers mit der Größe des residenten Speichers

  3. Wie kann man den Java zugewiesenen Speicher erhöhen? java.lang.OutOfMemoryError: Java-Heapspeicher

Bitte zögern Sie nicht, weitere Details zu bearbeiten oder zu kommentieren.

Hrish
quelle

Antworten:

15

Sie können verwenden java -Xmx4096m, um Ihren Heap auf 4 GB zu setzen.

Sie können export _JAVA_OPTIONS=-Xmx4096mIhre Shell dann über die Datei (.bashrc, .zshrc) hinzufügen.

zeitue
quelle
1
Wie überprüfen Sie die aktuelle Konfiguration der Heap-Größe?
Josh.thomson
2
Wenn Sie laufen java -XshowSettings:vm, sollte in der Nähe der Spitze so etwas wie "Max. Heap Size (Estimated): 2.60G"
Zeitue
Würde eine Erhöhung der RAM-Größe auf dem Server den Heap-Fehler beseitigen? Hier ist mein Szenario: askubuntu.com/questions/611685/…
josh.thomson
Dies hängt davon ab, ob der Heap für den Hauptspeicher zu groß wird. Wenn der Heap beispielsweise 2 GB erreicht und der Arbeitsspeicher nur zwei GB beträgt, wird wahrscheinlich vorher ein Fehler angezeigt, da sich andere Dinge im Speicher befinden. Wenn der Fehler darin besteht, dass das Programm einen größeren Heap benötigt und Java 0,5 GB als maximale Heap-Größe angegeben hat und Sie 1 GB für das Programm benötigen, handelt es sich eher um einen Einstellungsfehler als um ein Hardwareproblem.
Zeit
Ah! Hier ist mein Ergebnis: Max. Heap-Größe (geschätzt): 494,94 MB ... Ich denke, es wäre eine gute Idee, die Heap-Größe auf etwa 2 GB zu erhöhen. Nach einigen Recherchen habe ich herausgefunden, dass es auf 32-Bit-Ubuntu 14.04 LTS-Systemen (mit einer bestimmten PAE-Konfiguration) ein 3-GB-RAM-Limit gibt ... Also habe ich den RAM auf 3 GB erhöht (das Netzwerk funktioniert nicht). Ich werde versuchen, den Haufen zu vergrößern und sehen, ob das funktioniert! -Danke für deine Hilfe.
Josh.thomson
0

Hmmmm .... Die Java-Leistung ist nicht unbedingt an die Größe der Heap-Größe gebunden. Durch Erhöhen der maximalen Größe verhindern Sie eine Quelle von Fehlern aufgrund von Speichermangel (es gibt andere Dinge, die diesen Java-Fehler erzeugen).

Die einzige Effizienz wird erzielt, indem die Anzahl der Aufrufe verringert wird, um die Stapelspeichergröße zu erhöhen, wenn Sie den vorab zugewiesenen Heap auf die maximale Größe einstellen.

Hmm ... Ich denke, es könnte auch den Garbage Collector ein wenig verlangsamen, da er nicht so schnell reagieren müsste wie ein kleinerer Haufen.

Beide oben genannten Anpassungen der Heap-Größe sind in der Java-Befehlszeile verfügbar.

mdpc
quelle