如何查看 Java 程序运行时的火焰图,看完这篇博客,相信你会有答案。

使用 async-profiler 工具为例,来获取Java程序的方法执行火焰图:

  1. 安装 async-profiler 首先,你需要下载并安装 async-profiler 工具。你可以从 async-profiler GitHub 页面 获取最新版本的下载链接和安装说明。

  2. 启动目标程序: 在终端中,使用 Java 命令启动你的目标 Java 程序。例如:

    java -jar YourApp.jar
    
  3. 获取 Java 进程 ID: 打开另一个终端窗口,使用以下命令获取你的 Java 程序的进程 ID:

    jps
    

    这将列出当前运行的 Java 进程以及对应的进程 ID。

  4. 采集方法执行数据: 在第一个终端窗口中,使用以下命令运行 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。
  5. 生成火焰图: 在终端中运行以下命令,使用 async-profiler 工具生成火焰图:

    ./flamegraph.pl <output-file> > flamegraph.svg
    ./flamegraph.pl profile_data.txt > flamegraph.svg
    
    • <output-file>:之前指定的保存火焰图数据的文件名。
    • flamegraph.svg:生成的火焰图文件。
  6. 查看火焰图: 使用浏览器或图片查看器打开生成的 flamegraph.svg 文件,即可查看 Java 程序的方法执行火焰图。

请注意,以上步骤仅是示例,并且可能会因工具版本和系统环境而有所不同。在实际使用中,请参考 async-profiler 的官方文档和相关指南,以获得更详细的操作说明。同样,也可以考虑使用其他性能分析工具(如 Java Mission Control、YourKit 等)来获取方法执行火焰图。