我正在尝试在满足某些运行时条件时有选择地监视/配置Java应用程序。我已经能够使用HotSpotDiagnosticMXBean即时转储堆,这非常有用。
我现在正在尝试使用CPU分析执行类似的操作,希望能够更有效地定位特定的代码路径。我对命令行HPROF interface和NetBeans探查器有一些经验,但都需要事先启动。
有没有办法在正在运行的应用程序中以编程方式激活HPROF探查器?最好是允许我随意启动和停止分析过程的东西吗?
答案 0 :(得分:1)
根据JVMTI documentation,在执行任何字节码之前,必须在JVM初始化期间很早地加载像hprof这样的本机代理库。所以不,不可能在飞行中这样做。
另一种方法是在主函数中使用修改后的JVM参数重新启动java进程,尽管这并非易事。