GC HotSpotオプションとそれに対応するコレクタ名

sun jdk 6u13 での実行結果。Client VMだとSerialGCがデフォルトで、Server VMだとParallelGCがデフォルトっぽい。コンカレントGCを有効にするには明示的に指定しないといけない。コレクタ名だけ見てると、-XX:+UseConcMarkSweepGCと-Xconcgcは等価。

$ java -XX:+UseSerialGC GC
Copy
MarkSweepCompact

$ java -XX:+UseParallelGC GC
PS Scavenge
PS MarkSweep

$ java -Xconcgc GC
ParNew
ConcurrentMarkSweep

$ java -XX:+UseConcMarkSweepGC GC
ParNew
ConcurrentMarkSweep

GC.java

$ cat GC.java
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.List;

public class GC {
    public static void main(String[] args) {
        List<GarbageCollectorMXBean> gcBeans = ManagementFactory.getGarbageCollectorMXBeans();
        for (GarbageCollectorMXBean gcBean : gcBeans) {
            System.out.println(gcBean.getName());
        }
    }
}