2

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

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

4

2 回答 2

5

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 等。

于 2013-09-18T19:41:24.047 回答
3

您可以使用 jconsole 并在其 GUI 中访问 JVM 的一些 JMX bean。在那里,您可以看到 JVM 内存的 Tenured 或 Young 部分的 GC 详细信息。它就在您的 jdk/bin 文件夹中(HotSpot)

以下是一些有用的资源:

使用 JConsole

于 2013-09-18T19:42:07.013 回答