记忆泄漏嫌疑人

时间:2017-02-07 23:58:08

标签: java memory memory-leaks heap-dump

在我们的团队中,我们正在使用一个溢出问题的服务。它是由长时间的API延迟引起的,其中GC时间占据了大部分部分。然后我发现堆内存使用率非常高。我使用jmap为服务获得了大约4.4 GB的堆转储。我使用Eclipse Memory Analyzer来解析堆转储。我发现2.8GB的堆转储是无法访问的对象。 任何人都有建议我应该怎么做才能进一步调试这个问题? 谢谢。

1 个答案:

答案 0 :(得分:0)

如果从内存耗尽时有堆转储,我建议使用MAT查找任何可疑的支配树,这是一个较大的保留集大小的参考路径。

可能是同一个类在不同的类加载器中结束,或者如果Web应用程序或错误的缓存问题可能是HTTP会话保留。

我建议你先从简单的事情开始。

  1. 快速查看装载罐子的位置和位置。
  2. 确保已启用类卸载(使用CMS)。
  3. 在堆转储上使用内存分析器工具,以确切了解保留的内容和由谁保留。