脚本宝典收集整理的这篇文章主要介绍了

Java-FlameGraph火焰图

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

什么是FlameGraph火焰图?怎么用?以下会为你一一解答。

Let's Go!


1.结论

  • 如果能生成出来对应图表,分析java使用cpu性能很好用。
  • 但是有时生成出来的堆栈写着Unknown,没有具体堆栈信息,会比较抓狂。

如想获取更多信息请参考:https://github.com/jvm-profiling-tools/perf-map-agent/issues/44

  • Github提问题回复速度也较慢,遇到自己解决不了的问题也会比较头疼。

2.是什么?

用于量化框架中的性能,包括代码编译消耗的时间,代码缓存,其他系统类库及内核代码执行的时间,常用于定位cpu使用率问题。

3.有什么种类?

4.怎么样?

clipboard.png

5.安装及应用呢?

FlameGraph介绍

安装及应用步骤

环境要求(重要)

  • 操作系统centos 7.0
  • cmake2.8.6或以上
  • JDK8 update 60 build 19 以后,需要添加jdk启动参数:-XX:+PreserveFramePointer
  • 安装perf

6.怎么看?

clipboard.png

图表

  • y轴:栈深度
  • x轴:cpu时间
  • 长方形:一个栈(方法)
  • 长度:出现在监视器中的时长(占用cpu的时间)
  • 其他:从左到右的顺序只是按字母排序,无其他意义

分析

  • 从下到上:从父到子方法追查方法
  • 从上到下:先找出占用最多时间的栈,找出它的进程,在图最底部,关注最宽的方法。

工具包

  • perf_events:标准linux分析器,用于生成系统堆栈信息
  • perf-map-agent:提供转换perf_events成带java标示的JVMTI代理
  • Flame Graph:生成火焰图的工具
  • Misc:生成全部java进程的堆栈信息

7.还有一些问题

  • 很多java方法都是缺少的,对比起jstack,在图里的堆栈信息可能只有1/3的深度。
  • JVM动态编译(JIT)时不会暴露一个图表给系统监视器(已修复)
  • JVM还使用x86上的帧指针寄存器(RBP在x86 - 64)作为一个通用寄存器

总结

以上是脚本宝典为你收集整理的

Java-FlameGraph火焰图

全部内容,希望文章能够帮你解决

Java-FlameGraph火焰图

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过