能否使用xperf分析Java托管代码的CPU耗时?
能否用Xperf分析Java托管代码的内部CPU时间?
可以用Xperf分析Java托管代码的内部CPU时间,但默认情况下Xperf只能捕获JVM的原生线程信息,看不到具体的Java方法调用,需要额外配置才能实现:
- 启用JVM的
-XX:+PreserveFramePointer参数(Java 8u60及以上版本支持),让JVM保留栈指针,便于Xperf捕获完整调用栈。 - 使用
perfmap工具生成Java方法的符号映射文件,Xperf通过该文件可将原生内存地址映射为对应的Java方法名。 - 启动Xperf时执行命令:
xperf -on PROC_THREAD+LOADER+PROFILE,开启必要的事件追踪后附加到目标Java进程。
你提供的截图显示的应该是未配置时的状态——仅能看到JVM原生层面的调用信息,无法解析出Java方法。完成上述配置后,就能在Xperf的分析视图中查看具体Java方法的调用链及其CPU时间占比了。
内容的提问来源于stack exchange,提问作者tallharish
相关产品推荐
相关产品推荐

