gpt4 book ai didi

java - 使用 Eclipse MAT 无法找到由 Array Object 创建的内存泄漏

转载 作者:行者123 更新时间:2023-11-29 08:48:57 25 4
gpt4 key购买 nike

我正在旧 Java 应用程序中使用 MAT(分析堆转储)调试内存不足问题。MAT 显示 RMI 线程创建了我的业务对象 (BO) 的数组 (BO[150K+]),它有 150k+ 个实例,它消耗大约 358 MB(Xmx 是 512 MB)。这是内存泄漏的情况。

我在所有转储(服务器崩溃后创建)中注意到一个更有趣的部分,数组对象中的实例数是相同的。

我无法理解如何找出这个数组对象,这个数组对象是在哪个类中创建的。 MAT 中是否有任何此类直接/间接功能可用?

请建议 visualVM 或其他工具是否提供此类选项。或者我可以在代码库上运行的一些内存分析器。

最佳答案

在 Eclipse MAT 直方图中选择数组对象并右键单击并选择

“合并到 GC Root 的最短路径”(不包括弱引用),

这应该向您显示创建路径,一直到创建此数组的基类对象。

enter image description here

关于java - 使用 Eclipse MAT 无法找到由 Array Object 创建的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23685719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com