如何找到导致内存泄漏的类?

时间:2015-10-27 08:42:23

标签: java eclipse memory memory-leaks

我们在IBM J9 VM上运行weblogic服务器,堆大小为512M。

今天,服务器因OutOfMemory错误而失败。

我用Eclipse Memory Analyzer打开了堆转储文件xxx.phd(安装了IBM DTFJ pluign以支持.phd文件)。

MAT给我一个泄密嫌疑人报告:

One instance of "java.lang.Object[]" loaded by "<system class loader>" occupies 402,572,608 (74.86%) bytes. The memory is accumulated in one instance of "java.lang.String[][]" loaded by "<system class loader>".

如何找到创建这个大数组的类?

还是那些仍在使用这个大数组的类?

或任何帮助我识别大阵列的提示?

1 个答案:

答案 0 :(得分:2)

最好的办法是使用分析器精确定位内存链接的位置,因为许多不同的位置会耗尽JVM的内存并导致OutOfMemory异常。到目前为止,只检查内存转储。