在程序中动态启动Java HPROF分析器

8
我正在尝试在特定运行时条件下选择性地监控/分析Java应用程序。我已经能够使用HotSpotDiagnosticMXBean实现实时堆转储,这非常有用。
现在,我正在尝试通过CPU分析来做类似的事情,希望更有效地定位特定的代码路径。我有一些使用命令行HPROF接口和NetBeans分析工具的经验,但需要预先启动两者。
是否有一种方法可以从运行中的应用程序中以编程方式激活HPROF分析器?最好是允许我在需要时启动和停止分析进程的东西。
1个回答

1
根据JVMTI文档,像hprof这样的本地代理库必须在JVM初始化期间非常早地加载,即在执行任何字节码之前。因此,不,无法实时执行此操作。
另一种选择是在主函数中使用修改后的JVM参数重新启动java进程,尽管这并不容易。

遗憾的是,就 HPROF 而言,这似乎是正确的答案... +1 - thkala
1
我并不认为这是一个好的答案。它取决于原始问题要解决的更具体的内容。引用的文档说,性能分析代理必须在JVM执行任何代码之前启动...它并没有说性能分析必须在代码开始执行之前开始。分析器可以启动,而 分析 可以稍后开始。编程控制性能分析启动时间的方法将非常有用。你能否说 性能分析 必须在任何代码执行之前开始?并引用参考资料? - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接