gpt4 book ai didi

java - jprofiler "Hot Spot" View 是否正确说明了通过 JNI 调用的 native 代码消耗的 CPU?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:02 25 4
gpt4 key购买 nike

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

任何对此问题的见解都将不胜感激。

编辑:我刚刚发现了一篇非常令人不安的学术论文,题为“Evaluating the Accuracy of Java Profilers”(我会提供一个链接,但谷歌结果引用的科罗拉多大学服务器似乎现在非常不高兴,所以我不得不从谷歌的“快速查看”链接中下载一份副本)。我怀疑本地方法的问题在于它们被多算了,因为对它们的调用很多,它们很短并且调用很可能导致屈服点;但是,我不确定是否同样适用于时间转换例程。请注意,在对同一测试运行使用插桩分析和采样分析时,我得到了截然不同的结果,而且插桩结果更符合我的直觉。我将这篇论文推荐给任何曾经发现自己对分析运行的结果摸不着头脑的人。尽管如此,仍然希望有人能提供更多信息; “探查器错误”并不是一个令人欣慰的结果。

编辑 2:看起来 colorado.edu 已经自行解决了,这里是链接:http://www-plan.cs.colorado.edu/klipto/mytkowicz-pldi10.pdf

最佳答案

热点 View 显示了固有时间较长的方法。在调用 TreeView 中,您会在调用树的顶部看到总时间较长的方法。这些方法通常不是热点。

什么被视为“固有时间”取决于过滤器的配置方式。

请参阅this help topic以获得详尽的解释。

关于java - jprofiler "Hot Spot" View 是否正确说明了通过 JNI 调用的 native 代码消耗的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com