首页 > 其他 > 详细

Jcmd 分析jvm虚拟机并解析jfr文件

时间:2017-04-13 19:11:54      阅读:511      评论:0      收藏:0      [点我收藏+]

Jcmd 分析jvm虚拟机

 

在JDK 1.7之后,新增了一个命令行工具jcmd。它是一个多功能工具,可以用来导出堆,查看java进程,导出线程信息,执行GC等。

 

开启JFR需要三步:

  • 创建一个包含了你自己配置的JFR模板文件。运行 jmc, 然后 窗口→飞行记录模板管理 菜单。准备好档案后,就可以导出文件,并移动到要排查问题的环境中。

 技术分享

 

 

  • 由于JFR需要JDK的商业证书,这一步需要解锁jdk的商业特性。

jcmd <PID> VM.unlock_commercial_features

 技术分享

  • 启动jcmd

       以demo应用为例:

      技术分享

jcmd <PID> JFR.start name=test1 duration=10s settings=template filename=output1.jfr

   技术分享

收集完监控数据后用jmc打开

 

 

UI界面展示:

 技术分享

 

 

output1.jfr是一个二进制文件,下面讲下如何用脚本分析.

 

分析output1.jfr 需要用到https://github.com/chrishantha/jfr-flame-graph

install-mc-jars.sh

mvn clean install -U

git clone https://github.com/brendangregg/FlameGraph.git

export FLAMEGRAPH_DIR=/path/to/FlameGraph

 

通过以下命令转换成可识别的数据文件

火焰图

./create_flamegraph.sh -f recording_13801_1.jfr -i > flamegraph.svg

 技术分享

转为json串

./flamegraph-output.sh json -f recording_13801_1.jfr > resource.json

对json串进行递归分析后可以获得如下数据,key表示具体的函数名,value表示该函数的执行次数样本统计:

 技术分享

 

 

 技术分享

 

Jcmd 分析jvm虚拟机并解析jfr文件

原文:http://www.cnblogs.com/chanlengr/p/6705489.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!