有没有办法获取正在运行的 JVM 的 GC 设置?
我正在尝试查看运行 SerialGC、ParallelGC、ParallelOldGC、ConcurrentMarkSweepGC 等的 GC 算法。
有没有办法获取正在运行的 JVM 的 GC 设置?
我正在尝试查看运行 SerialGC、ParallelGC、ParallelOldGC、ConcurrentMarkSweepGC 等的 GC 算法。
JVM 有一个很好的 MBean:
for(GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) {
System.out.println(gc.getObjectName());
}
您应该会看到 MBean 名称,例如“PS Scavenge”或“PS Mark Sweep”。使用以下参考将名称与算法匹配:
Copy (Young) - 复制收藏家
ParNew (Young) - 并行年轻代收集器
PS Scavenge (Young) - 并行对象清道夫
MarkSweepCompact(旧) - 标记和清扫压实机
ConcurrentMarkSweep (Old) - 并发标记和扫描压缩器
PS MarkSweep(旧) - 并行标记和扫描收集器
同样的信息也可以使用任何查看 MBean 的工具来收集:JConsole、JVisualVM、Jprofiler 等。
您可以使用 jconsole 并在其 GUI 中访问 JVM 的一些 JMX bean。在那里,您可以看到 JVM 内存的 Tenured 或 Young 部分的 GC 详细信息。它就在您的 jdk/bin 文件夹中(HotSpot)
以下是一些有用的资源: