获取运行 JVM 的 GC 设置

ric*_*chs 2 java garbage-collection

有没有办法获取正在运行的 JVM 的 GC 设置?

我正在尝试查看运行 SerialGC、ParallelGC、ParallelOldGC、ConcurrentMarkSweepGC 等的 GC 算法。

Jk1*_*Jk1 5

JVM 有一个很好的 MBean:

for(GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) {
   System.out.println(gc.getObjectName());
}
Run Code Online (Sandbox Code Playgroud)

您应该会看到 MBean 名称,如“PS Scavenge”或“PS Mark Sweep”。使用以下参考将名称与算法匹配:

Copy (Young) - 复制收藏家

ParNew (Young) - 并行年轻代收集器

PS Scavenge (Young) - 并行对象清道夫

MarkSweepCompact (Old) - 标记和清扫压实机

ConcurrentMarkSweep (Old) - 并发标记和清除压实器

PS MarkSweep (Old) - 并行标记和扫描收集器

也可以使用任何查看 MBean 的工具来收集相同的信息:JConsole、JVisualVM、Jprofiler 等。