Java 火焰图
用 Java 火焰图分析了几次函数占用 CPU 的情况,记录一下操作方法。
java profiler 生成 trace 文件 ( lightweight-java-profiler )
下载
cd /usr/local/src
wget https://github.com/dcapwell/lightweight-java-profiler/archive/master.zip
unzip master
复制代码
修改采样周期(可选)
src/globals.h(在长时间采样时,可以适当地减少每秒采样次数,不然最终生成的文件会很大,分析起来比较麻烦)
// Things that should probably be user-configurable
// Number of times per second that we profile
static const int kNumInterrupts = 100;
// Maximum number of stack traces
static const int kMaxStackTraces = 3000;
// Maximum number of frames to store from the stack traces sampled.
static const int kMaxFramesToCapture = 128;
复制代码
编译
cd lightweight-java-profiler-master/
make all
生成build-64文件夹
复制代码
程序启动引用
# 在 Java 程序的启动脚本中,引用生成的 build-64 类库
java -agentpath:/xxx/build-64/liblagent.so xxx
复制代码
程序停止后写入 straces 文件
FlameGraph 的使用
下载
cd /usr/local/src
mkdir flamegraph
cd flamgraph
wget https://github.com/brendangregg/FlameGraph/archive/master.zip
复制代码
转换矢量图
unzip master.zip
cd FlameGraph-master/
./stackcollapse-ljp.awk < /xxx/traces.txt | ./flamegraph.pl > traces.svg
复制代码
浏览器查看矢量图(Chrome)
参考链接
https://www.cnblogs.com/xingzifei/p/7446264.html
发布于: 2020 年 05 月 24 日阅读数: 67
评论