![jconsole 和日志文件之间的 Java 垃圾收集存在差异](https://linux22.com/image/804004/jconsole%20%E5%92%8C%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%B9%8B%E9%97%B4%E7%9A%84%20Java%20%E5%9E%83%E5%9C%BE%E6%94%B6%E9%9B%86%E5%AD%98%E5%9C%A8%E5%B7%AE%E5%BC%82.png)
我遇到了一个奇怪的问题:我的垃圾收集日志文件(由 -Xloggc 定义)将显示发生了 n 次垃圾收集,但 jconsole 将显示发生了 n+6 次垃圾收集。
我使用 ConcurrentMarkSweep(又名 CMS)指标来衡量这一点。例如,我在日志文件中看到 230 个“CMS-concurrent-sweep-start”示例,但 jconsole 报告发生了 236 个 CMS 事件。
我感到很困惑。有人能解释一下其中的区别吗?为什么 jconsole 记录了正好六个 CMS 事件?
答案1
发帖后不到两分钟,我自己就回答了这个问题。这是 Java 5、6 和 6u2 中的一个已知错误。我使用的是 6。
解决方法是升级 Java。