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.
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:
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.
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
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.
Tags und Links java garbage-collection jvm