如何分析WebSphere Java堆转储文件以进行故障排除
应用程序故障排除总是令人兴奋和具有挑战性的。然而,如果你没有所需的工具,那么它将令人沮丧。
如果你正在使用WebSphere,那么在项目阶段,你大部分的时间都需要花在故障排除和调整应用程序性能上。
对于性能相关的问题,你将与开发人员合作,并被要求获取堆转储进行分析。
获取堆转储有多种方法。如果你想知道如何在WebSphere中获取,那么点击这个 guide will help you。
一旦你有了堆转储,你需要进行分析,不幸的是,你不能在记事本中打开,所以你需要使用工具。但不用担心,下面的工具将帮助你读取堆转储文件进行分析。
它们都是免费的!
IBM HeapAnalyzer
IBM的HeapAnalyzer可以帮助你找到可能的Java堆泄漏区域,并可以 download from here。
- 一旦下载了jar文件,你可以像下面这样运行它们。
java -Xmx4g -jar ha456.jar
- 它将打开分析器。要打开堆转储,转到文件>>选项并选择堆转储。根据文件大小,可能需要几秒钟的时间,然后给出总览视图。
怀疑任何泄漏的最快方式是:
- 转到分析菜单>>分析视图
如果没有发现泄漏,它会显示类似于这样的信息。
所以继续尝试“分析”下的各种选项,以熟悉这个工具。
Eclipse Memory Analyzer (MAT)
MAT可以分析包含数亿个对象的堆转储文件,并且速度很快。它可以快速检查疑似泄漏并在一分钟内生成出色的图形报告。
MAT默认不支持WebSphere生成的堆转储文件,所以你需要使用插件。
你可以下载 MAT from here 和 plugins from here。插件的安装很简单。只需将插件jar文件复制到MAT插件文件夹中。
- 一旦下载MAT,你可以通过执行以下命令来打开它
./MemoryAnalyzer
- 要分析堆转储文件,转到文件>>打开堆转储并选择文件
- 它将花费几秒钟时间并提示“入门向导”。
你可以选择任何你想要的内容,然后点击完成。啊,它找到了两个泄漏嫌疑对象。
MAT非常强大,可以分析一些指标。
例如:
- 最大对象的顶级消费者
- 最大顶级占有者类
- 最大顶级占有者包
- 线程概述
- 堆转储概述
如果你使用其他J2EE应用服务器,那么你可以使用 VisualVM 来分析堆转储。
你可能还对 learning about Java memory management 感兴趣。