注意:Travis 已移除对 Oracle JDK 8 的支持。因此暂时移除了构建状态。
将 JFR 方法分析样本转换为 FlameGraph 兼容格式
这是一个简单的应用程序,用于读取 Java Flight Recorder 转储中的方法分析样本,并将这些堆栈跟踪转换为 FlameGraph 兼容格式。
此应用程序使用了未受支持的 JMC Parser。
有关更多详细信息,请参阅我的博客文章"使用 Java Flight Recordings 生成火焰图"。
前提条件
该项目依赖于 Oracle JDK 8。因此,请确保将 JAVA_HOME
设置为 Oracle JDK 8。
如何构建和安装
使用以下命令构建和安装 jfr-flame-graph
应用程序:
./gradlew installDist
这将在 ./build/install/jfr-flame-graph/bin
中安装可执行文件。
您可以将此位置添加到 PATH
中。
克隆 FlameGraph 仓库
克隆 Brendan 的 FlameGraph 仓库,并将环境变量 FLAMEGRAPH_DIR
设置为 FlameGraph 目录
git clone https://github.com/brendangregg/FlameGraph.git
export FLAMEGRAPH_DIR=/path/to/FlameGraph
如何生成火焰图
在 ./build/install/jfr-flame-graph/bin
目录中有辅助脚本用于生成火焰图。
例如:
./create_flamegraph.sh -f /tmp/highcpu.jfr -i > flamegraph.svg
在网络浏览器中打开 SVG 文件。
使用脚本时加上 -h 参数可查看可用选项。
例如:
$ ./jfr-flame-graph -h
用法:JFRToFlameGraphWriter [选项]
选项:
-d, --decompress
解压 JFR 文件
默认值:false
-et, --end-timestamp
过滤的结束时间戳(以秒为单位)
默认值:9223372036854775807
-e, --event
用于生成火焰图的事件类型
默认值:cpu
可选值:[cpu, allocation-tlab, allocation-outside-tlab, exceptions, monitor-blocked, io]
-h, --help
显示帮助
-ha, --hide-arguments
隐藏方法中的参数
默认值:false
-i, --ignore-line-numbers
忽略堆栈帧中的行号
默认值:false
* -f, --jfrdump
Java Flight Recorder 转储文件
-l, --live
导出堆栈跟踪样本时间戳(在 json 输出类型中)
默认值:false
-o, --output
输出文件
-ot, --output-type
输出类型
默认值:folded
可选值:[folded, json]
-j, --print-jfr-details
打印 JFR 详细信息并退出
默认值:false
-t, --print-timestamp
在 JFR 详细信息中打印时间戳
默认值:false
-rv, --show-return-value
在堆栈中显示方法的返回值
默认值:false
-st, --start-timestamp
过滤的开始时间戳(以秒为单位)
默认值:-9223372036854775808
-sn, --use-simple-names
在堆栈中使用简单名称而不是限定名称
默认值:false
许可证
版权所有 (C) 2015 M. Isuru Tharanga Chrishantha Perera
根据 Apache License 2.0 版许可