Kann Garbage Collection Speicher für das Betriebssystem freigeben?
Wenn ein Garbage Collector (GC) ausgeführt wird, bereinigt er ungenutzten Speicher ein Prozess. Ein weit verbreitetes Missverständnis besteht darin, dass dieser Speicher immer zur Wiederverwendung im Speicherpool des Prozesses gehalten wird, was zu der Annahme führt, dass der Speicher eines Prozesses nie wirklich abnimmt.
Dies ist jedoch bei der verwendeten HotSpot-JVM nicht der Fall in Java. Es gibt zwar Speicher an das Betriebssystem zurück, tut dies jedoch aufgrund des Leistungsaufwands, der durch die Größenänderung des Heapspeichers entsteht, nur widerwillig.
Faktoren, die das Speicherfreigabeverhalten beeinflussen
Die Fähigkeit Die Art und Weise, wie der GC den Heap verkleinert, hängt von verschiedenen Faktoren ab Faktoren:
-
Garbage Collector: Verschiedene Collectors verfügen über unterschiedliche Fähigkeiten zum Verkleinern des Heaps.
-
JVM-Version:Heap-Verkleinerungsfunktionen wurden eingeführt in späteren JVM-Versionen.
-
Collector-Einstellungen: Einige zusätzliche Optionen können übergeben werden um die Heap-Verkleinerung für bestimmte Sammler zu ermöglichen.
Methoden zur Förderung der Heap-Verkleinerung
Wenn eine Heap-Verkleinerung gewünscht wird, können mehrere Methoden eingesetzt werden:
-
Aggressive GC-Konfiguration: Legen Sie JVM-Optionen fest wie -XX:GCTimeRatio=19, -XX:MinHeapFreeRatio=20 und -XX:MaxHeapFreeRatio=30, um GC-Ausführungen zu veranlassen und ungenutzten Speicher nach jedem Zyklus zu begrenzen.
-
Gleichzeitige GC: Set - XX:InitiatingHeapOccupancyPercent auf einen niedrigen Wert, um gleichzeitige Sammlungen häufiger auszulösen, was zwar CPU-Ressourcen verbrauchen, aber den Heap beschleunigen kann verkleinert.
-
G1GC-Änderungen: Aktivieren Sie in JDK 8 -XX:-ShrinkHeapInSteps, um die Heap-Verkleinerung aggressiver anzuwenden.
-
JDK 9: Aktivieren sofortige Speicherfreigabe für G1GC über G1PeriodicGCInterval.
-
JDK 12: Ähnliches Prompt-Release-Verhalten ist standardmäßig für ZGC aktiviert.
Das obige ist der detaillierte Inhalt vonGibt Java Garbage Collection Speicher an das Betriebssystem zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn