我正在旧 Java 应用程序中使用 MAT(Analyzing Heap Dump)调试 OutOfMemory 问题。MAT 显示 RMI 线程创建了 My Business Object(BO) 的 Array(BO[150K+]),它有 150k+ 个实例,它消耗大约 358 MB(Xmx 是 512 MB)。这是一种内存泄漏情况。
在所有转储(在服务器崩溃后创建)中,我注意到一个更有趣的部分,Array Object 中的实例数量是相同的。
我无法理解如何找出这个 Array Object ,这个数组对象是在哪个类中创建的。MAT 中是否有任何此类直接/间接功能?
请建议在 visualVM 或其他工具中是否有任何此类选项。或者一些我可以在代码库上运行的内存分析器。