【发布时间】:2015-09-18 18:25:10
【问题描述】:
我想在我的应用程序中添加一个选项,最终用户可以启动 CPU 分析、重现性能问题、停止 CPU 分析,然后将分析信息作为电子邮件附件发送给我们的支持团队。我希望我可以使用 JVisualVM 用来停止和启动分析并返回结果的相同机制。
有人知道 JVisualVM 是如何做到这一点的吗?它不需要在命令行上设置 -agentlib:hprof 选项 - 它使用 hprof 还是其他机制?
【问题讨论】:
我想在我的应用程序中添加一个选项,最终用户可以启动 CPU 分析、重现性能问题、停止 CPU 分析,然后将分析信息作为电子邮件附件发送给我们的支持团队。我希望我可以使用 JVisualVM 用来停止和启动分析并返回结果的相同机制。
有人知道 JVisualVM 是如何做到这一点的吗?它不需要在命令行上设置 -agentlib:hprof 选项 - 它使用 hprof 还是其他机制?
【问题讨论】:
JVisualVM 通过使用 JMX 命令动态添加代理来检测代码。这实现起来并不简单。您可能会发现 JVisualVM 有一个 API,如果是这样,我会使用它而不是尝试自己实现它。如果它没有公共 API 并且我怀疑它没有,我建议尝试一些更简单的方法。
【讨论】:
该工具使用动态检测。
当按下 Profiler 选项卡中的 CPU 按钮时,分析器会附加到应用程序并开始分析其性能。一开始分析器需要检测应用程序的一些方法,实际检测方法的数量显示在状态区域中。由于分析器使用动态检测,检测方法的数量可能会在分析会话期间发生变化。附加分析器并开始收集数据后...
https://blogs.oracle.com/nbprofiler/entry/profiling_with_visualvm_part_1
【讨论】: