Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVisualVM如何启动和停止CPU评测?_Java_Profiling_Jvisualvm - Fatal编程技术网

Java JVisualVM如何启动和停止CPU评测?

Java JVisualVM如何启动和停止CPU评测?,java,profiling,jvisualvm,Java,Profiling,Jvisualvm,我想在我的应用程序中添加一个选项,最终用户可以在其中启动CPU评测,重现性能问题,停止CPU评测,然后将评测信息作为电子邮件附件发送给我们的支持团队。我希望我可以使用JVisualVM用于停止和启动评测并返回结果的相同机制 有人知道JVisualVM是如何做到这一点的吗?它不需要在命令行上设置-agentlib:hprof选项-它是否使用hprof或其他机制?该工具使用动态检测 当按下探查器选项卡中的CPU按钮时,探查器将连接到应用程序并开始评测其性能。在开始时,探查器需要为应用程序的某些方法插

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


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

该工具使用动态检测

当按下探查器选项卡中的CPU按钮时,探查器将连接到应用程序并开始评测其性能。在开始时,探查器需要为应用程序的某些方法插入指令,实际插入指令的方法数将显示在状态区域中。由于探查器使用动态插装,插装方法的数量可能会在分析会话期间发生变化。连接探查器并开始收集数据后


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

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