Java 应用在线性能分析和火焰图

首先,应用启动的时候,要给 java 加上参数:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=loglevel=info

然后在想开始采样的时候

sudo -u 

  -i jcmd 
 
   JFR.start filename=/tmp/app.jfr duration=60s
 

这里可以指定输出的文件路径,和采样时间。

之后可以用

sudo -u 

  -i jcmd 
 
   JFR.check
 

来检查采样是不是已经完成了。确认完成后,就可以把 jfr 文件传回本地,用 jmc 来分析了。如果想要生成火焰图,还有这么个工具: https://github.com/chrishantha/jfr-flame-graph
。具体用法可以看文档。大致上,代码拖回来后,

cd jfr-flame-graph
install-mc-jars.sh
mvn clean install -U

就编译好了。另外还需要 https://github.com/brendangregg/FlameGraph

工具准备好以后,

path/to/jfr-flame-graph/run.sh -f app.jfr -o app.txt
cat app.txt | path/to/FlameGraph/flamegraph.pl >app.svg

就能生成一个漂亮的火焰图了。

更多文章请点击http://go2live.cn