Warum benötigt die JVM weniger Speicher als -Xms?

8

Meine Frage ist wie der Titel, und ich habe etwas Wissen durch die Suche:

  1. linux hat gemeinsamen Speicher Wie kann man die tatsächliche Speichernutzung eines Anwendung oder Prozess?

  2. JVM reserviert die in Xms eingestellte Speichermenge Was bedeutet die -Xms JVM in Bezug auf Heapspeicher?

Aber immer noch nicht wissen, warum, können einige auf etwas Hilfe bieten?

Hier ist mein Testlauf auf Ubuntu12.04 (64bit) | JDK 1.7.0_04. und obere zeigt unten:

%Vor%     
Brian HU 24.08.2012, 11:39
quelle

2 Antworten

5

Sie sehen sich den residenten Speicher an, also den physischen RAM-Speicher. Weitere Informationen finden Sie hier .

Der virtuelle Speicher ist jedoch der von Ihrer Anwendung belegte Speicher, einschließlich des ausgelagerten Speichers (auf Platte). Sie werden sehen, dass es eine engere Übereinstimmung mit dem virtuellen Speicher und Ihren -Xms -Einstellungen gibt.

Siehe diese ServerFault-Antwort für weitere Informationen .

    
Brian Agnew 24.08.2012, 11:45
quelle
3

Wenn Ihre JVM gestartet wird, reserviert sie beim Start die maximale Heap-Größe als einen fortlaufenden Block virtuellen Speichers. Es werden jedoch nur die tatsächlich verwendeten Seiten zu residenten Seiten (tatsächlicher Hauptspeicher)

Wenn Sie die Mindestgröße festlegen, wird die JVM nicht gezwungen, so viel Speicher zu verwenden, wenn sie nicht benötigt wird. Stattdessen wird nur wenig Aufwand betrieben, um den Speicher bis zu diesem Punkt zu reduzieren (möglicherweise sehen Sie noch einige kleinere Sammlungen). In den meisten Anwendungen wird die Mindestgröße fast sofort erreicht, aber ein "Hallo Welt" -Programm verwendet den gleichen Speicher, egal wie groß Sie setzen die Mindestgröße zu sein.

    
Peter Lawrey 24.08.2012 12:19
quelle

Tags und Links