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

标签 java eclipse memory memory-leaks

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

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

我用 Eclipse Memory Analyzer 打开了堆转储文件 xxx.phd(并且安装了 IBM DTFJ 插件以支持 .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>".

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

或者那些仍在使用这个大数组的类?

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

最佳答案

最好的办法是使用探查器来查明内存泄漏的位置,因为许多不同的位置可能会耗尽 JVM 的内存并导致 OutOfMemory 异常。到目前为止,仅检查内存转储就够了。

关于java - 如何找到导致内存泄漏的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363263/

相关文章:

java - Spring boot 能够接受 Enum 作为请求参数

Java 反射,getMethod()

java - 编译 GWT 项目时出现错误 : Could not find or load main class com. google.gwt.dev.Compiler

java - 无法将我的 GoogleAppEngine(GAE/J) 应用程序与 JPA (DataNucleus) 集成

Java 64 位比 32 位版本使用更多内存

java - 如何相交两组不适合内存的long?

java - 如何从 Java 中的 ArrayList 中删除对象?

java - 读取一个jsp传递给另一个jsp的参数

eclipse - 如何在本地构建和运行 Scala Spark

c - 在 mex 代码中释放内存