写点什么

Java 火焰图

用户头像
wong
关注
发布于: 2020 年 05 月 24 日

用 Java 火焰图分析了几次函数占用 CPU 的情况,记录一下操作方法。


java profiler 生成 trace 文件 ( lightweight-java-profiler )
  1. 下载

cd /usr/local/srcwget https://github.com/dcapwell/lightweight-java-profiler/archive/master.zipunzip master
复制代码


  1. 修改采样周期(可选)

src/globals.h(在长时间采样时,可以适当地减少每秒采样次数,不然最终生成的文件会很大,分析起来比较麻烦)  // Things that should probably be user-configurable
// Number of times per second that we profilestatic const int kNumInterrupts = 100;
// Maximum number of stack tracesstatic const int kMaxStackTraces = 3000;
// Maximum number of frames to store from the stack traces sampled.static const int kMaxFramesToCapture = 128;
复制代码


  1. 编译

cd lightweight-java-profiler-master/make all生成build-64文件夹
复制代码


  1. 程序启动引用

# 在 Java 程序的启动脚本中,引用生成的 build-64 类库java -agentpath:/xxx/build-64/liblagent.so xxx
复制代码


  1. 程序停止后写入 straces 文件

staces.txt文件在程序运行同级目录
复制代码


FlameGraph 的使用
  1. 下载

cd /usr/local/srcmkdir flamegraphcd flamgraphwget https://github.com/brendangregg/FlameGraph/archive/master.zip
复制代码


  1. 转换矢量图

unzip master.zipcd FlameGraph-master/./stackcollapse-ljp.awk < /xxx/traces.txt | ./flamegraph.pl > traces.svg
复制代码


  1. 浏览器查看矢量图(Chrome)


参考链接

https://www.cnblogs.com/xingzifei/p/7446264.html


发布于: 2020 年 05 月 24 日阅读数: 67
用户头像

wong

关注

人生充满黑色幽默 2017.10.24 加入

一名工程师

评论

发布
暂无评论
Java 火焰图