摘要
火焰图是分析应用性能问题很好的工具,只是网上的文章都是讲述分析 C, C++ 等语言的,对Java 语言描述甚少,此处记录一下自己使用火焰图分析Java 栈的过程。
环境
Linux: centos6 jdk: 1.7
步骤
火焰图是性能大神 brendangregg 创造的,我们使用的脚本在他的github 上 https://github.com/brendangregg/FlameGraph.git , 将项目clone 到本地,进入到 FlameGraph 文件夹中,创建两个文件(文件来自mik01aj 的gist,稍微修改了一下)
profile.sh:
#!/bin/sh
# Usage: ./profile.sh pid output.txt
PROFILED_PID=$1
OUTPUT_FILE=$2
echo "Getting stacktraces from process $PROFILED_PID... Will stop on ^C or when the process exits."
rm -f "$OUTPUT_FILE"
while true; do
jstack "$PROFILED_PID" >> "$OUTPUT_FILE" && sleep 0.01 || break
done
echo
echo "Done! Stacks saved to $OUTPUT_FILE"
gen.sh:
#!/bin/bash
# Usage: ./ge