2

我正在尝试通过 JMX 将老一代的收集计数远程检索到另一个应用程序。我最初的方法是检查 MemoryPool 和 GarbageCollector 对象。我看到在 MemoryPool -> PS Old Gen -> MemoryManagerNames 下我有:

  1. PS MarkSweep

现在,我可以看看 GarbageCollector -> PS MarkSweep -> CollectionCount。但是,PS Eden Space 内存池注册了相同的算法:

  1. PS MarkSweep
  2. PS清除

必须有一种方法可以获取特定于一个池的信息。VisualGC有一个知道的方法:

视觉gc

4

1 回答 1

0

简单地说 - 垃圾收集始终是 JVM 范围的(不是特定于内存池的)。虽然一些算法(例如年轻收集 - PS Scavenge)可能只处理一个池,而其他算法(PS Mark Sweet)正在处理整个堆(eden + old space + perm space)。

所以没有针对伊甸园空间的特定计数 PS Mark Sweep,只有在 JVM 中执行的 PS Mark Sweep 总数。

您在 VisualConsole 中看到的数字与您在 GarbageCollector -> PS MarkSweep -> CollectionCount MBean 中看到的相同。

于 2012-09-28T06:19:10.883 回答