为啥 JVM Monitor 显示错误的调用计数?

Posted

技术标签:

【中文标题】为啥 JVM Monitor 显示错误的调用计数?【英文标题】:Why is JVM Monitor showing the wrong invocation count?为什么 JVM Monitor 显示错误的调用计数? 【发布时间】:2015-08-20 14:14:03 【问题描述】:

通过记录一个静态变量,我可以看到我在测试运行中调用了我的函数 belongsInResults() 14,000 次,但 JVM Monitor 的“调用计数”仅读取 215。这个函数只在一个地方被调用。这是 JVM 的调用树报告,底部有 belongsInResults()

:

我通过在调用 mergePrefixes 之前在我的单元测试中设置一个断点并在之后设置另一个断点,然后在那里开始和停止分析来产生这个。

我也很好奇为什么“自我时间”加起来不能达到 100%。

【问题讨论】:

【参考方案1】:

分析器有两种工作方式: - 添加代码做每个方法(仪器) - 以固定的时间间隔进行线程转储(采样)

只有 first 可以提供准确的调用计数,但开销要高得多

【讨论】:

完全正确。在我第一次运行 CPU 分析器时,我必须选择一种模式,选择默认模式,然后忘记了。我通过右键单击调用树进行了更改,得到了准确的结果,加起来也达到了 100%。非常感谢。

以上是关于为啥 JVM Monitor 显示错误的调用计数?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在多模块调试的情况下$monitor需要配合$monitoron和$monitoroff来工作

Performance Monitor2:性能计数器

为啥应用安装计数在 Google 开发者控制台中显示少于应用卸载计数

为啥我不能在 Laravel 上正确映射嵌套查询? “在 null 上调用成员函数 map()”显示为错误

为啥没有类似 Monitor.EnterAsync 的方法

为啥在第一次 Fetch 后出现字段计数不匹配错误?