【问题标题】:How do I figure out garbage collection counts on PS Old Gen through JMX?如何通过 JMX 计算 PS Old Gen 上的垃圾收集计数?
【发布时间】:2012-09-27 21:48:20
【问题描述】:

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

  1. PS MarkSweep

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

  1. PS MarkSweep
  2. PS 清除

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

【问题讨论】:

  • 老一代的统计数据也应该有一个对象。你能显示你正在使用的代码吗?
  • 我目前正在使用 JVisualVM 来探索 MBean。最终,这将进入一个监控系统,该系统将通过 JMX 轮询收集计数。正如我已经提到的,有一个名为 MemoryManagerNames 的对象,但其中列出的算法也出现在其他内存池中,因此我无法查看该算法的集合计数。
  • 当我使用代码获取所有内存区域时,它们都已存在。我建议你试试看。

标签: java memory-management garbage-collection


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多