Wie kann ich sehen, was Garbage Collector ausführt, indem ich gc logs anschaue?

8

Wie kann ich sehen, welcher Garbage Collector (CMS, Parallel usw.) ausgeführt wird, indem ich gc-Protokolle für kleinere und größere Sammlungen anschaue? Ich habe keinen Zugriff auf die Befehlszeilenoptionen, die auf Java gesetzt sind (das Sysadm für den Anwendungsserver lässt mich nicht sehen). Ich habe ziemlich ausführliche GC Logs.

    
user1329339 01.11.2012, 09:11
quelle

3 Antworten

3

Das genaue Format der GC-Nachrichten hängt von der JVM-Version und den JVM-Einstellungen ab. Sie können Beispiele im Oracle-Tutorial zum GC-Tuning sehen.

>

DefNew ist der Standardkollektor. Es ist entweder seriell oder parallel. Welche Version gewählt wird, hängt wiederum von der JVM Version / den Einstellungen ab. Sie können Ihre Standardeinstellungen in JDK 6 mit java -XX:+PrintCommandLineFlags -version sehen. Auf meinem System gibt es Folgendes aus:

%Vor%

was bedeutet, dass Parallel GC DefNew für mich ist. Sie können diese SO-Frage überprüfen und eine der Antworten darauf finden diese tabelle , kann es dir helfen.

AKTUALISIEREN Standard Old Gen GC in JDK 6 ist ParallelOldGC, siehe diese aufschlussreiche PDF . Insbesondere können Sie Old Gen GC mit der Option -XX:+UseConcMarkSweepGC JVM in einen neueren Concurrent-Mark-Sweep ändern.

    
Victor Sorokin 01.11.2012, 09:20
quelle
2

Wenn man das Buch "Java Performance" von Charlie Hunt zitiert, ändert sich der Name des Raums der jungen Generation, der in den GC-Logs verwendet wird, mit dem verwendeten GC:

%Vor%

Ich bin mir nicht sicher über G1

    
PierluigiVernetto 07.06.2015 14:13
quelle
1

Sie können GC-Protokollbeispiele für alle HotSpot JVM-Speicherbereinigungsalgorithmen in finden Artikel .

-XX:+PrintGCDetails sollte aktiviert sein, um diese Detailebene im GC-Protokoll zu berücksichtigen.

    
Alexey Ragozin 02.11.2012 06:16
quelle

Tags und Links