选择恰当的性能分析工具
Java 应用的性能问题多种多样,有 IO 方面的,也有处理器资源方面的。针对不同的性能问题,性能分析师需要使用不同的采样手段和分析工具。VPA 中有两个工具可以用于分析 Java 应用的性能问题:Profile Analyzer 和 Call Tree Analyzer。它们适用于不同的性能问题。
Call Tree Analyzer 可以帮助用户找到耗时最长的方法以及该方法的所有调用堆栈,对所有与速度相关的性能问题都适用。
Profile Analyzer 则对于那些和处理器资源密切相关的性能问题(比如 CPU 利用率 100%)有比较强的针对性。
Profile Analyzer
Profile Analyzer 被用于分析抽样数据。抽样采样时,系统每隔一定周期,采样一次,采集当前正在运行的指令的地址、线程号和进程号。根据被抽样到的概率不同,可以知道哪些进程、线程、指令消耗了最多的处理器资源。除此之外 , 抽样采样给应用造成的额外开销比较小。Profile Analyzer 为抽样采样数据的分析提供了一系列的文字或者图形的视图。通过这些视图,分析师可以将性能瓶颈定位到进程、线程、类、方法甚至具体的代码。
小程序 booksotre 的第二个性能问题是 CPU 资源相关的性能问题,通过 Profile Analyzer 可以迅速找到占用处理器资源最多的代码。
Call Tree Analyzer
Call Tree Analyzer 被用于分析方法调用追踪数据。方法调用追踪数据中记录了方法调用堆栈和方法调用的起始时间。方法调用追踪数据可以用于分析各种速度相关的性能问题。Call Tree Analyzer 将方法调用追踪数据以方法调用树的形式展现出来。通过对方法调用树的分析,用户不仅可以找到自身调用时间最长、总调用时间最长的方法,还可以根据这些方法的调用堆栈了解到性能瓶颈形成的原因。
小程序 bookstore 的第一个性能问题有可能是 IO 问题,Profile Analyzer 不适用于这样的问题,可以用 Call Tree Analyzer 来寻找性能瓶颈。