【IT168 技术】
引言
类是 Java 的基础。大规模的 Java 应用是由成千上万个类构成的。当出现性能问题时,如何才能在这一大堆类中迅速定位性能瓶颈呢?更糟糕的是,有些类是由某个同事在上个世纪编写的,某些类是第三方提供的,没有人明白这些类给整个应用带来了怎样的性能影响。
VPA 中的两个工具:Profile Analyzer 和 CallTree Analyzer,对 Java 应用程序的性能分析提供了有力的支持。这两个工具提供了多个视图,帮助用户从不同的角度分析性能数据。通过这两个工具帮助,用户可以快速地从这成千上万行的代码中找到性能最差的方法或者代码行。
使用 VPA 分析性能问题的过程可以分为三步:
针对不同性能问题,选择恰当的性能分析工具;
采集性能数据;
使用 VPA 分析性能数据;
本文将以小程序 bookstore 为例,介绍如何使用这两个工具快速定位性能问题。
小程序 bookstore
bookstore 是个基于 AWT 的图形界面程序。它读取图书索引文件到内存中,然后列出文件中包含的所有图书分类。如果用户在分类列表中选中某个图书分类,图书列表中会列出所有该分类下的图书。图 1 是小程序 bookstore 图形界面的截图。
▲图1 bookstore 小程序
bookstore 小程序有两点性能问题:
打开比较大的图书索引文件需要比较长的等待时间。
如果用户选中一个分类,bookstore 小程序会很长时间不响应,并且 100% 地占用 CPU 资源。