JVM anfängliche Heap-Speicherzuordnung [Duplikat]

Dec 07 2020

Ich habe die Werte -Xms und -Xmx als die gleichen angegeben, sagen wir 4 GB. Als ich meine Spring-Boot-Anwendung startete, ging ich davon aus, dass das Betriebssystem direkt nach dem Start der Anwendung 4 GB Speicher zuweist, da dies der mit dem Argument -Xms angegebene Wert ist. Wenn ich jedoch den Resident-Satz der Anwendung und auch den Heap-Speicher (mit JMX) überprüft habe, kann ich feststellen, dass der zugewiesene Speicher immer noch weniger als 1 GB beträgt. Dies bedeutet also, dass das Betriebssystem nicht unbedingt den mit -Xms angegebenen Speicher zuweist.

Danke im Voraus.

Antworten

JurajMartinka Dec 07 2020 at 12:23

Sie haben nicht angegeben, welches Betriebssystem und welcher JVM-Anbieter / welche JVM-Version verwendet wird, aber das Betriebssystem weist Seiten häufig träge zu, dh sie befinden sich nicht im RAM ("resident"), sofern dies nicht erforderlich ist. Wenn Ihre Anwendung diesen Heapspeicher nicht benötigt, wird sie nicht resident sein. Es gibt auch eine "adaptive Größenrichtlinie", die den Heap sogar unter "-Xms" verkleinern kann, wenn die Belegung zu niedrig ist:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html