Java jprofiler是否;热点“;是否正确查看通过JNI调用的本机代码消耗的CPU帐户?

Java jprofiler是否;热点“;是否正确查看通过JNI调用的本机代码消耗的CPU帐户?,java,jprofiler,Java,Jprofiler,我一直在使用JProfiler分析一段Java代码,该代码通过JNI调用本机C代码,我从“CPU视图”窗口得到了奇怪的结果。特别是,“调用树”选项卡上的信息告诉我,调用本机代码的Java方法消耗的运行时间最多,但“热点”选项卡甚至根本没有列出该方法。我还注意到org.joda.time类也有类似的情况,据报道它们占用了相当大的CPU,但没有被报告为热点,我想知道这是否是因为它们花费大量时间调用本机日期转换代码 如能深入了解此问题,将不胜感激 编辑:我刚刚发现了一篇非常令人不安的学术论文,题为“评

我一直在使用JProfiler分析一段Java代码,该代码通过JNI调用本机C代码,我从“CPU视图”窗口得到了奇怪的结果。特别是,“调用树”选项卡上的信息告诉我,调用本机代码的Java方法消耗的运行时间最多,但“热点”选项卡甚至根本没有列出该方法。我还注意到org.joda.time类也有类似的情况,据报道它们占用了相当大的CPU,但没有被报告为热点,我想知道这是否是因为它们花费大量时间调用本机日期转换代码

如能深入了解此问题,将不胜感激

编辑:我刚刚发现了一篇非常令人不安的学术论文,题为“评估java分析器的准确性”(我会提供一个链接,但是看起来像谷歌服务器引用的这个文件对于科罗拉多大学的服务器来说非常不快,所以我不得不从谷歌的“快速查看”链接中抄下一个副本。我怀疑本机方法的问题在于它们被过度计数,因为对它们的调用很多,它们很短,并且调用可能会导致屈服点;但是,我不确定这是否适用于时间转换例程。请注意,在同一测试运行中使用插入式评测和采样式评测时,我得到了显著不同的结果,插入式评测的结果更符合我的直觉。我把这篇论文推荐给任何一个曾经为分析结果而挠头的人。但仍然希望有人能获得更多的信息;“探查器错了”并不是一个很令人欣慰的结果


编辑2:看起来colorado.edu已经整理好了,下面是链接:

热点视图显示了具有大量固有时间的方法。在调用树视图中,您可以在调用树的顶部看到总时间较大的方法。这些方法通常不是热点

什么是“固有时间”取决于过滤器的配置方式

请看详细的解释