Java性能分析火焰图是什么?
java
性能分析火焰图的所做的事情就是能够分析出java
程序运行期间存在的性能问题,因为某段代码拖慢整个程序执行是不允许的,因此靠火焰图的绘制和分析就可以找出类似的“问题代码段”。async-profiler
,这个工具会在程序运行期间向jvm
发送信号采集其运行期数据(简单来说就是通过该工具可以找出程序中占用CPU资源时间最长的代码块,这里async-profiler
的实现使用了jvmti
,然后生成相应的数据格式文件,而FlameGraph则负责读取和解析数据文件生成对应的火焰图(svg文件)。git clone https://github.com/jvm-profiling-tools/async-profiler
这里使用mac演示
可以新建一个工程,编写Target.java
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
选择谷歌浏览器打开
生成火焰图
接下来就可以慢慢进行性能分析了