IDEA 中使用火焰图

IDEA 中使用火焰图,第1张

IntelliJ IDEA 与以下分析工具集成:

选择 【 Run 'xxx' with 'Java Flight Recorder' 】

会出现如下错误:

在 VM options 中添岁码加 -XX:+UnlockCommercialFeatures 参数。

在【Profiler】窗口点击【Stop Profiling and Show Results】

然后就可以看到结果。

F4 调转到源码:

假设 testMethod() 方法执行耗时太长,我们需要排查时间谨携花费在哪里。

排查步骤如下所示:

通过【Flame Graph】可以看出, java.util.Random#nextBytes 调用栈的采样率为 99.43% 。表示 CPU 大部乎晌哪分时间都在执行 java.util.Random#nextBytes 函数。和预期一致!

数据的可视化显示能够让我们的工作更加流畅,以及对项目的发展状态有直观的了解。今天我们就一起来学习一下,常见的数据可视化图都有哪些类型。

折线

折线图可能是常见的可视化方式了,它可以让用户很直观地按照时间维度了解系统的情况。系统中每个单一或聚合的指标都会正滑悔以一条折线在图表中体现。但当同一个图表中同时存在多条折线时,就可能会对阅读有所影响,所以举正大多数情况下都可以选择仅查看其中的少数几条折线,而不是让所有折线同时显示。如果某个指标的数值产生了大于正常范围的波动,就会很容易发现。例如下图中异常的紫线、黄线、浅蓝线。

折线图的另一个让闷用法是可以将多条折线堆叠起来以显示它们之间的关系。例如对于通过折线图反映服务器的请求数量,可以单独看到每台服务器上的请求,也可以聚合在一起看。这就可以在同一个图表中灵活查看整个系统以及每个实例的情况了。

热力图

另一种常见的可视化方式是热力图。热力图与条形图比较类似,还可以在条形图的基础上显示某部分在整体中占比的变化情况。例如在查看网络请求延时的时候,就可以使用热力图快速查看到所有网络请求的总体趋势和分布情况,另外,它可以使用不同颜色来表示不同部分的数值。

仪表

还有一种常见的可视化方式是仪表图,用户可以通过仪表图快速了解单个指标。仪表一般用于单个指标的显示,例如车速表代表汽车的行驶速度、油量表代表油箱中的汽油量等等。大多数的仪表图都有一个共通点,就是会划分出所示指标的对应状态。

除了常规仪表样式的显示方式之外,还有较为直接的数据显示方式,配合相同的配色方案,一眼就可以看出各个指标所处的状态,这一点与和仪表的特点类似。用户不需要仔细阅读,就可以大致了解各个指标的不同状态。这种类型的可视化是我常用的类型,在数秒钟之间,我就可以全面地总览系统各方面地运行情况。

火焰图

由Netflix的BrendanGregg在2011年开始使用的火焰图是一种较为少见地可视化方式。它不像仪表图那样可以从图表中快速得到关键信息,通常只会在需要解决某个应用的问题的时候才会用到这种图表。火焰图主要用于CPU、内存和相关帧方面的表示,X轴按字母顺序将帧一一列出,而Y轴则表示堆栈的深度。图中每个矩形都是一个标明了调用的函数的堆栈帧。矩形越宽,就表示它在堆栈中出现越频繁。java课程培训机构发现在分析系统性能问题的时候,火焰图能够起到很大的作用,大家不妨尝试一下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12417245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存