Open TFdream opened 3 years ago
linux系统上,我们可以使用perf 工具采样数据,然后用火焰图工具生成火焰图。那么Java有没有类似工具呢,那还用说,肯定有啦,很多很多。很多工具比perf简单方便。
关于火焰图的使用参考以下两篇文章:
对于java应用,我们可以使用 Async-perf 进行了热点采集。
另外,JFR 作为 JVM 中问题定位的新贵,关于 JFR 的原理和使用,可以参考Java Flight Recorder - 事件机制详解。
最后,再配合 Alibaba开源的Java诊断工具 Arthas ,基本上可以快速定位线上各种疑难杂症了。
Async-profiler是一个对系统性能影响很少的Java采样分析器,它的实现是基于HotSpot特有的API,通过这些特有的API收集堆栈跟踪和跟踪内存分配,因而其可以和OpenJDK、Oracle JDK和其他基于HotSpot JVM的Java应用在运行时协同工作。
Github项目链接地址:https://github.com/jvm-profiling-tools/async-profiler
Async-profiler可以跟踪以下类型的事件:
支持的平台
注意:macOS分析仅限于用户空间代码。
直接在 https://github.com/jvm-profiling-tools/async-profiler#download 下载相应平台的文件包,由于我本人使用的是mac os,故我下载 async-profiler-2.0-macos-x64.tar.gz。
下载完成后解压缩:
$ mkdir -p /opt/async-profiler $ tar -zxvf async-profiler-2.0-macos-x64.tar.gz -C /opt/async-profiler
解压完成后执行:
$ ./profile.sh
会显示帮助信息,常用的方法 都在官方README 中 Example有介绍。
$ jps 9234 Jps 8983 Computey $ ./profiler.sh start 8983 $ ./profiler.sh stop 8983
采样一段时间(30秒):
$ ./profiler.sh -d 30 8983
生成火焰图:
$ jps 9234 Jps 8983 Computey $ ./profiler.sh -d 30 -f /tmp/flamegraph.html 8983
linux系统上,我们可以使用perf 工具采样数据,然后用火焰图工具生成火焰图。那么Java有没有类似工具呢,那还用说,肯定有啦,很多很多。很多工具比perf简单方便。
关于火焰图的使用参考以下两篇文章:
对于java应用,我们可以使用 Async-perf 进行了热点采集。
另外,JFR 作为 JVM 中问题定位的新贵,关于 JFR 的原理和使用,可以参考Java Flight Recorder - 事件机制详解。
最后,再配合 Alibaba开源的Java诊断工具 Arthas ,基本上可以快速定位线上各种疑难杂症了。
1、介绍
Async-profiler是一个对系统性能影响很少的Java采样分析器,它的实现是基于HotSpot特有的API,通过这些特有的API收集堆栈跟踪和跟踪内存分配,因而其可以和OpenJDK、Oracle JDK和其他基于HotSpot JVM的Java应用在运行时协同工作。
Github项目链接地址:https://github.com/jvm-profiling-tools/async-profiler
Async-profiler可以跟踪以下类型的事件:
支持的平台
注意:macOS分析仅限于用户空间代码。
2、快速入门
直接在 https://github.com/jvm-profiling-tools/async-profiler#download 下载相应平台的文件包,由于我本人使用的是mac os,故我下载 async-profiler-2.0-macos-x64.tar.gz。
下载完成后解压缩:
解压完成后执行:
会显示帮助信息,常用的方法 都在官方README 中 Example有介绍。
采样一段时间(30秒):
生成火焰图:
相关资料