目录

IDEA新版中Java-Flight-Recorder程序性能监视工具的使用

IDEA新版中Java Flight Recorder程序性能监视工具的使用

Java Flight Recorder简介

研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。而 Java Flight Recorder (JFR)是一种监视工具,可在应用程序执行期间收集有关Java虚拟机中特定时间实例中事件(数据片段)的信息。

如何使用?

  1. 从主菜单中,选择 Run | Edit Configurations

    然后从左侧列表中选择要使用JFR分析的运行配置。

  2. Configuration

    选项卡上,展开 Environment

    部分。

  3. VM options

    ,添加: -XX:+UnlockCommercialFeatures 。(没有配置此项, Run xxx with Java Flight Recorder

    启动会报错)

  4. 应用更改并关闭对话框。

  5. 单击右上角的 Run xxx with Java Flight Recorder 启动项目或者在启动类右键 Run xxx with Java Flight Recorder ,如下图

https://i-blog.csdnimg.cn/blog_migrate/13f8fe826bd66cf64bb89d223477707c.png

https://i-blog.csdnimg.cn/blog_migrate/b31a694d039286b9b686405c47a93052.png

  1. 项目启动完成后打开下方的 Profiler, 可以看到已运行时长,一定时间后(推荐5min),点击 Stop Profiling and Show Results ,即可查看火焰图 https://i-blog.csdnimg.cn/blog_migrate/0c87061edda79717d7bbfdccfc9601d2.png

火焰图

https://i-blog.csdnimg.cn/blog_migrate/021ae4dd0b4d604003caca4b1e3339e0.png

火焰图是根据调用栈的样本集生成的可视化性能分析图,《 》一文对火焰图进行了不错的讲解,大家可以参考一下。简而言之,看火焰图时我们需要关注“平顶”,因为那里就是我们程序的CPU热点。调用树是另一种可视化分析的手段,与火焰图一样,也是根据同一份样本集而生成,按需选择即可。

将鼠标悬停在任何块上可以查看详细信息。

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。

x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。

https://i-blog.csdnimg.cn/blog_migrate/97758d86bc470e51bb25eb0e819d809c.gif 如果生活欺骗了你,不要着急 — 拿出美颜相机,去欺骗生活。

https://i-blog.csdnimg.cn/blog_migrate/f85ececbc7798d968f6f660b903bddc5.jpeg 喜欢就点个赞关注一下呗 ~~

一个从装环境开始的学习记录公众号,欢迎大家关注:

https://i-blog.csdnimg.cn/blog_migrate/67c95f01de08b1029258f82afd95e378.jpeg