web-dev-qa-db-de.com

Java-App, die viel Speicher benötigt. -Xmx benutzen?

Ich habe eine Java-App, die ungefähr 15G auf einem Computer mit 16G verwendet. Ich weiß nicht, ob ich die maximale Heap-Größe festlegen soll.

Wenn gesetzt, frisst der JVM den gesamten RAM bis zum Limit und beginnt dann mit dem Sammeln von Müll und stoppt alles, während er 15 G Haufenobjekte verschlingt?

Andernfalls beeinträchtigt der JVM die Leistung, wenn nicht der gesamte verfügbare RAM auf der Maschine verwendet wird.

Mein spezifischer VM ist: Java HotSpot (TM) 64-Bit-Server VM (Build 1.6.0_03-b05, gemischter Modus).

Vielen Dank

21
Martin Redmond

-Xmx15G legt die maximale Größe des Heapspeichers auf 15 GB fest. Java weist nur das zu, was es benötigt, wenn es ausgeführt wird. Wenn Sie es nicht festlegen, wird nur die Standardeinstellung verwendet. Informationen zur Standardeinstellung finden Sie in diesem Beitrag .

-Xms15G setzt den minimalen Heap auf 15 Gig. Dies zwingt Java, 15 GB Heap-Speicherplatz zuzuweisen, bevor es mit der Ausführung beginnt, unabhängig davon, ob es diesen benötigt oder nicht.

Normalerweise können Sie beide Werte auf geeignete Werte festlegen, je nachdem, wie Sie die JVM optimieren.

18
Cogsy

In Java 6 wird die standardmäßige maximale Größe des Heapspeichers durch die Größe des vorhandenen Systemspeichers bestimmt.

Laut der Garbage Collector Ergonomics - Seite beträgt die maximale Größe des Heapspeichers:

Kleiner als 1/4 des physischen Speichers oder 1 GB. Vor J2SE 5.0 war die maximale Standardgröße des Heapspeichers 64 MB.

Mit dem Schalter -Xmx kann die maximale Größe des Heapspeichers geändert werden. Weitere Informationen zur Verwendung finden Sie in der Dokumentation Java - the Java Application Launcher .

12
coobird

Wenn Sie keine maximale Heap-Größe festlegen (mit -Xmx), beträgt das Standardmaximum dann nicht nur 64 MB?

Scheitert Ihre Anwendung also nicht mit OutOfMemoryErrors, wenn Sie sie nicht festlegen? Ich bin in dieser Frage verwirrt. Wie kann Ihre Anwendung ohne diesen Schalter ausgeführt werden?

0
matt b