Joy*_*ysn 5 java memory memory-leaks out-of-memory
由于我对应用程序的OutOfMemoryErrors有一些问题,我想确定根本原因.我从AIX服务器上的IBM VM创建了堆转储(PHD),并尝试使用IBM Support assistant 4.1及其Memory Analyzer工具对其进行分析.
解析堆转储时,ISA会询问我是否要运行泄漏可疑报告.
使用泄漏方面的支持,我得到了一些消耗大量内存的类的信息.
我现在想要识别的是对象引用的持有者,但我可以例如只看到ArrayList包含哪些对象,而不是谁拥有对该ArrayList的引用.
我怎样才能获得这些信息?
在Memory Analyzer(MAT)中加载堆转储。
转到直方图,然后查看大尺寸的对象。
现在,右键单击此按钮,然后选择“即时控制者”。它将打开一个统治者树,您可以识别什么在握住您的对象。

有时,当大对象是局部变量时,您将无法在树中看到直接的支配者。它只能告诉您变量是哪个线程的一部分。(下图没有显示此局部变量的情况)

在这种情况下,请检查(堆栈跟踪)在哪里获取OutOfMemoryError。然后,将其向后追溯,并尝试找出使用大对象作为局部变量的方法。在大多数情况下,我们使用相同的方法来获取大型对象,这在某个时间点显示在堆栈跟踪中,同时分配更多的内存时,我们会得到OutOfMemoryError。
| 归档时间: |
|
| 查看次数: |
4334 次 |
| 最近记录: |