【问题标题】:How does JVisualVM start and stop CPU profiling?JVisualVM 如何启动和停止 CPU 分析?
【发布时间】:2015-09-18 18:25:10
【问题描述】:

我想在我的应用程序中添加一个选项,最终用户可以启动 CPU 分析、重现性能问题、停止 CPU 分析,然后将分析信息作为电子邮件附件发送给我们的支持团队。我希望我可以使用 JVisualVM 用来停止和启动分析并返回结果的相同机制。

有人知道 JVisualVM 是如何做到这一点的吗?它不需要在命令行上设置 -agentlib:hprof 选项 - 它使用 hprof 还是其他机制?

【问题讨论】:

    标签: java profiling jvisualvm


    【解决方案1】:

    JVisualVM 通过使用 JMX 命令动态添加代理来检测代码。这实现起来并不简单。您可能会发现 JVisualVM 有一个 API,如果是这样,我会使用它而不是尝试自己实现它。如果它没有公共 API 并且我怀疑它没有,我建议尝试一些更简单的方法。

    【讨论】:

    • 感谢您的回答 - 我希望只调用 JVisualVM 调用的任何方法来检测代码并开始分析,这样我就不必自己实现它(只需将 JVisualVM jar 包含在我的应用程序类路径)。我可以从 CPU 采样开始,它只使用与进程的 JMX 连接并调用 ThreadMXBean.dumpAllThreads() 来收集数据。如果这还不够准确,我可能会进一步调查完整的分析。再次感谢。
    【解决方案2】:

    该工具使用动态检测。

    当按下 Profiler 选项卡中的 CPU 按钮时,分析​​器会附加到应用程序并开始分析其性能。一开始分析器需要检测应用程序的一些方法,实际检测方法的数量显示在状态区域中。由于分析器使用动态检测,检测方法的数量可能会在分析会话期间发生变化。附加分析器并开始收集数据后...

    https://blogs.oracle.com/nbprofiler/entry/profiling_with_visualvm_part_1

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2010-12-17
      • 2019-10-15
      • 2012-01-22
      • 2012-08-16
      • 2012-07-04
      • 2012-07-31
      • 2018-06-12
      • 1970-01-01
      相关资源
      最近更新 更多