如何查看 Java 程序运行时的火焰图,看完这篇博客,相信你会有答案。
使用 async-profiler
工具为例,来获取Java程序的方法执行火焰图:
-
安装
async-profiler
: 首先,你需要下载并安装async-profiler
工具。你可以从 async-profiler GitHub 页面 获取最新版本的下载链接和安装说明。 -
启动目标程序: 在终端中,使用 Java 命令启动你的目标 Java 程序。例如:
java -jar YourApp.jar
-
获取 Java 进程 ID: 打开另一个终端窗口,使用以下命令获取你的 Java 程序的进程 ID:
jps
这将列出当前运行的 Java 进程以及对应的进程 ID。
-
采集方法执行数据: 在第一个终端窗口中,使用以下命令运行
async-profiler
工具,以开始采集方法执行数据:./profiler.sh -d <duration> -f <output-file> <pid> ./profiler.sh -d 30s -f profile_data.txt 20808 ./profiler.sh -d 30 -f ./flamegraph/flamegraph.html 21228 # 有用,直接生成HTML
<duration>
:采集的持续时间,例如 30s 表示采集30秒。<output-file>
:保存火焰图数据的文件名,例如profile_data.txt
。<pid>
:Java 进程的进程 ID。
-
生成火焰图: 在终端中运行以下命令,使用
async-profiler
工具生成火焰图:./flamegraph.pl <output-file> > flamegraph.svg ./flamegraph.pl profile_data.txt > flamegraph.svg
<output-file>
:之前指定的保存火焰图数据的文件名。flamegraph.svg
:生成的火焰图文件。
-
查看火焰图: 使用浏览器或图片查看器打开生成的
flamegraph.svg
文件,即可查看 Java 程序的方法执行火焰图。
请注意,以上步骤仅是示例,并且可能会因工具版本和系统环境而有所不同。在实际使用中,请参考 async-profiler
的官方文档和相关指南,以获得更详细的操作说明。同样,也可以考虑使用其他性能分析工具(如 Java Mission Control、YourKit 等)来获取方法执行火焰图。