前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java性能分析之火焰图

Java性能分析之火焰图

作者头像
千羽
发布2021-01-14 14:14:25
1.5K0
发布2021-01-14 14:14:25
举报
文章被收录于专栏:程序员千羽程序员千羽

火焰图来了

Java性能分析火焰图是什么?

  1. java性能分析火焰图的所做的事情就是能够分析出java程序运行期间存在的性能问题,因为某段代码拖慢整个程序执行是不允许的,因此靠火焰图的绘制和分析就可以找出类似的“问题代码段”。
  2. 那么这个图是怎么来的呢?首先跟大多数监控系统一样,数据采集+前端绘图,这个图也是根据某些数据绘制而成的,绘图工具本篇文章采用FlameGraph,而负责收集这些数据的工具,这里采用async-profiler,这个工具会在程序运行期间向jvm发送信号采集其运行期数据(简单来说就是通过该工具可以找出程序中占用CPU资源时间最长的代码块,这里async-profiler的实现使用了jvmti,然后生成相应的数据格式文件,而FlameGraph则负责读取和解析数据文件生成对应的火焰图(svg文件)。

从GitHub上clone

git clone https://github.com/jvm-profiling-tools/async-profiler

这里使用mac演示

可以新建一个工程,编写Target.java

代码语言:javascript
复制
import java.io.File;

public class Target {
    private static volatile int value;   
private static void method1() {
        for (int i = 0; i < 1000000; ++i) {
            ++value;
        }
    }

    private static void method2() {
        for (int i = 0; i < 1000000; ++i) {
            ++value;
        }
    }

    private static void method3() throws Exception {
        for (int i = 0; i < 1000; ++i) {
            for (String s : new File("/tmp").list()) {
                value += s.hashCode();
            }
        }
    }

    public static void main(String[] args) throws Exception {
        while (true) {
            method1();
            method2();
            method3();
        }
    }
}

打开终端:输入jps

输入命令,回车

生成svg

选择谷歌浏览器打开

生成火焰图

接下来就可以慢慢进行性能分析了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千羽的编程时光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 火焰图来了
  • 从GitHub上clone
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档