使用 IBM 性能分析工具解决生产环境中的性能问题
2010-04-12 00:00:00 来源:WEB开发网由于笔者之前并没有这方面的分析经验,觉得 heapdump 文件很大,就想当然拿它开刀了。首先是寻找工具,类似的工具有多种,笔者最后选择了 IBM 的 HeapAnalyzer(http://www.alphaworks.ibm.com/tech/heapanalyzer)。通过对 heapdump 文件的解析,HeapAnalyzer 可以分析出哪些对象占用了太多的堆栈空间,从而发现导致内存泄露或者可能引起内存泄露的对象。它的使用很简单,可以从它的 readme 文档中找到,这里我们简单举个例子如下:
#/usr/java50/bin/java – Xmx2000m – jar ha36.jar heapdump.20090602.134015.430370.phd
通常我们需要使用较大的 heapsize 来启动 HeapAnalyzer,因为通过 HeapAnalyzer 打开过大的 heapdump 文件时,也可能会因为 heapsize 不够而产生 OOM 的错误。开始的时候,笔者从服务器上将 heapdump 文件通过 ftp 下载下来,然后试图通过本机 window 环境进行分析。笔者使用的电脑是 2G 内存,启动 HeapAnalyzer 时指定的是 1536 M,但是几次都是到 90% 多的时候进度条就停止前进了。迫不得已同时也是为了能达到环境一致的效果,笔者将 HeapAnalyzer 上传到生产环境,直接在生产环境下打开 heapdump 文件。
查看原图(大图)
个人感觉 HeapAnalyzer 给出的分析结果可读性不强,而且不能准确定位问题,从分析结果看大致是因为加载的对象过多,但是是哪个模块导致的问题就跟踪不到了。笔者开始寻找 HeapAnalyzer 分析结果相关的资料,试图从这个可读性不强的结果中找到蛛丝马迹,可是许久没有进展,再一次陷入了困境。
更多精彩
赞助商链接