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

Why is JVM Monitor showing the wrong invocation count?

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

:

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

我也很好奇为什么"self time"加起来不等于100%。

探查器有两种工作方式: - 添加代码执行每种方法(检测) - 以固定间隔进行线程转储(采样)

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