【问题标题】:Lightweight Asynchronous Sampling Profiler with JProfiler (AsyncGetCallTrace)使用 JProfiler (AsyncGetCallTrace) 的轻量级异步采样分析器
【发布时间】:2013-07-12 09:33:08
【问题描述】:

我最近阅读了 Jeremy Manson (Google) 的一篇博客文章,其中介绍了如何更准确、更轻量级的异步采样分析器。它依赖于热点 JVM 中未记录的“AsyncGetCallTrace”方法来收集线程的堆栈跟踪。

http://jeremymanson.blogspot.fr/2013/07/lightweight-asynchronous-sampling.html

我对 JProfiler 社区的问题是:当前 7.2.3 版本的 JProfiler 可以使用 AsyncGetCallTrace 吗?这个功能在 JProfiler 8.0 的工作中吗?

【问题讨论】:

    标签: jvm-hotspot jprofiler


    【解决方案1】:

    分析器使用的 JVM 工具接口 (JVMTI) 具有大型测试工具,可确保每个版本的兼容性和稳定性。 AsyncGetCallTrace 不是该规范的一部分。 GetStackTrace 的开销非常低,因此不建议通用分析器牺牲受支持 API 的好处来换取不受支持的方法的感知收益。

    【讨论】:

    • 确实只有从 open-jdk 项目派生的 JVM 才支持 AsyncGetCallTrace。对于像 JProfiler 这样的通用工具来说,仅依赖它不是一个选项。但是我认为当检测到正确的 JVM 时,JProfiler 可以将其作为一个选项来支持。这将使它从基于标准 JVMTI 的解决方案中脱颖而出。在分析我们的内存中多线程分析数据库时,标准堆栈跟踪收集正成为一个重要的瓶颈,也是分析不准确的根源。
    • 我已将它添加到我们的问题跟踪器中,我们将调查它在哪些平台上可行。
    • 感谢英戈。希望大家有时间调查一下。阅读 Jeremy Manson 的博客文章中的一些评论,似乎 AsyncGetCallTrace 在任何平台的热点 JVM 中都可用)。
    • 该博客条目的链接:jeremymanson.blogspot.fr/2013/07/…
    • GetStackTrace 的开销在几年前可能被认为是低的,但是对于非常大的一类(并且不断增长的)应用程序来说,情况真的不再如此了。不过,很高兴看到您正在考虑支持它,这也有助于解决 JVMTI 需要重新审视的情况。
    猜你喜欢
    • 2011-09-23
    • 2019-09-25
    • 1970-01-01
    • 2011-10-14
    • 2011-06-07
    • 1970-01-01
    • 2011-01-09
    • 2010-09-23
    • 2014-05-22
    相关资源
    最近更新 更多