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