Erschöpfung des Java-Heapspeichers

Der Java™ -Heapspeicher ist erschöpft, wenn die Garbage-Collection nicht genügend Objekte für eine neue Objektzuordnung freigeben kann.

Die Garbage-Collection kann nur Objekte freigeben, die nicht mehr von anderen Objekten referenziert werden oder auf die von den Thread-Stacks verwiesen wird (weitere Informationen finden Sie unter Heapspeicherzuordnung in der OpenJ9 -Benutzerdokumentation ).

Die Erschöpfung des Java-Heapspeichers kann anhand der Ausgabe von -verbose:gc durch Garbage-Collection festgestellt werden, die immer häufiger auftritt, wobei weniger Speicher freigegeben wird. Schließlich schlägt die JVM fehl und die Heapspeicherbelegung liegt bei oder fast bei 100% (weitere Informationen zur Ausgabe von -verbose:gc finden Sie unter Verbose garbage collection logs in der OpenJ9 -Benutzerdokumentation ).

Wenn der Java-Heapspeicher erschöpft ist und die Erhöhung der Java-Heapspeichergröße das Problem nicht löst, besteht die nächste Stufe darin, die Objekte im Heapspeicher zu untersuchen und nach verdächtigen Datenstrukturen zu suchen, die auf eine große Anzahl von Java-Objekten verweisen, die freigegeben werden sollten. Verwenden Sie die Analyse des Heapspeicherauszugs (siehe Heapspeicherauszug verwenden in der J9 VM-Referenz). Ähnliche Informationen lassen sich auch mit anderen Tools wie JProbe und OptimizeIt sammeln.