【发布时间】:2013-09-18 19:37:18
【问题描述】:
有没有办法为正在运行的 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”。使用以下参考将名称与算法匹配:
复制(年轻)- 复制收藏家
ParNew (Young) - 并行年轻代收集器
PS Scavenge (Young) - 并行对象清道夫
MarkSweepCompact(旧)- 标记和清扫压实机
ConcurrentMarkSweep(旧)- 并发标记和扫描压缩器
PS MarkSweep(旧)- 并行标记和扫描收集器
同样的信息也可以通过任何查看 MBean 的工具来收集:JConsole、JVisualVM、Jprofiler 等。
【讨论】:
您可以使用 jconsole 并在其 GUI 中访问 JVM 的一些 JMX bean。在那里,您可以看到 JVM 内存的 Tenured 或 Young 部分的 GC 详细信息。它就在你的 jdk/bin 文件夹中(HotSpot)
这里有一些有用的资源:
【讨论】: