Garbage Collection Analyse

Das beste Hilfsmittel zur Analyse von Garbage Collection Problemen ist das Verbose GC log. In diese Datei schreibt der Garbage Collector seine Aktivierungen und die zum Aufräumen benötigte Zei. Bei der Sun/Oracle Hotspot JVM aktiviert man das Log beispielsweise mit:

-Xloggc:gc.vgc -XX:+PrintGCDetails

Da das Ausgabeformat nicht leider nicht spezifiziert ist, unterscheiden sich die Ausgaben von verschiedenen JVMs teilweise beträchtlich. Nicht alle Analysewerkzeuge kommen mit jedem Format klar. Will man die Logs nicht manuell auswerten, so kommen folgende 3 Werkzeuge am ehesten in Betracht.

Garbage Collection Analyse Werkzeuge

IBM Support Assistant

Am erfolgreichsten ist der GC Visualizer aus dem IBM Support Assistant. Er liest die meisten Formate problemlos ein und gibt neben einer Visualisierung als Graph auch noch textuelle Hinweise.

HPjmeter

Das IBM Werkzeug ist dicht gefolgt vom HPjmeter.
Leider scheitert HPjmeter an einigen genauer konfigurierten Garbage Collectoren, insbesondere dem CMS. HPJmeters Stärken sind vor allem das intuitive User Interface.

Tagtraum

Last, but not least, haben wir noch den tagtraum gc viewer. Die Funktionsweise ist gut, allerdings ist das User Interface etwas schwieriger zu bedienen. Die Performance ist bei großen Logs nicht besonders gut. Vorteilhaft ist allerdings die Lizenz des Werkzeuges, die bei HP und IBM eng an Produkte gekoppelt ist.

Garbage Collection Probleme

Es gibt einige Probleme, welche direkt durch die Garbage Collection verursacht werden. Am häufigsten sind die langen „Stop-The-World“ Pausen.

Lange Garbage Collection Pausen

Für einige Arbeitsschritte muss der Garbage Collector die JVM komplett pausieren. Diese Pausenzeiten sind bei großen Heaps sehr lang (größer 10 Sekunden) und damit in der Regel nicht tragbar. Die Analyse des Logs gibt Aufschluss darüber, was die Ursache für die lange Pause ist.

Häufige Garbage Collection Aktivierungen

Wird der Garbage Collector zu häufig aktiviert, so verbraucht er unnötig CPU Zeit. Häufig stellt man fest, dass zum Beispiel der Eden Space zu klein konfiguriert ist. Oder es werden unnötige Objekte erzeugt. Exzessive Objekterzeugung beseitigt man am besten mit einem Profiler.