当前位置: 首页 > 知识库问答 >
问题:

如何分析Intellij中的堆转储?(内存泄漏)

卢涵畅
2023-03-14

我已经用jmap工具从运行了几天的Java应用程序中生成了一个堆转储文件,这将导致一个很大的二进制堆转储文件。

我如何在IntellIJ IDEA中对这个堆转储执行内存分析?

我知道有一些用于Eclipse和Netbeans的工具,但如果可能的话,我更愿意使用IDEA。

分析的基本结果将告诉我每个对象在内存中的实例数(每个类),以便我能够开始调试内存泄漏。

共有2个答案

蓬弘
2023-03-14

我想把上面的答案更新到2018年,说要同时使用VisualVM和Eclipse Mat。

VisualVM用于实时监视和转储堆。您还可以使用强大的功能分析堆转储,但是MAT具有更多的功能(例如自动分析以查找泄漏),因此,我将VisualVM转储输出(.hprof文件)读取到MAT中。

在此下载VisualVM:https://VisualVM.github.io/

下载:https://www.eclipse.org/mat/downloads.php

希望有帮助!

邓阳嘉
2023-03-14

最好的是内存分析器(MAT),IntelliJ没有任何捆绑的堆转储分析器。

 类似资料:
  • 我的WebLogic服务器配置了16GB的堆空间,但当大多数用户开始工作时,90%的堆空间在生产使用1小时内就被使用了。我观察到每当这种情况发生时,都有几条线卡住了。 我已经检查了线程转储,没有“等待锁定”对象线程,线程类似于如下所示,线程没有明显的原因被卡住。

  • 我有一个非常奇怪的问题。我有一个30 GB的堆转储,我想在我的笔记本电脑上分析相同的(它有8 GB的内存)。我试着用MAT和IBM堆分析器这样做,但是根据他们的建议,Xmx大小应该超过转储大小。我也试着用MAT的文件分析堆转储,但是收到内存错误。 关于如何成功分析笔记本电脑上的垃圾,有什么建议吗? 提前谢谢!

  • 问题内容: 我必须在Java应用程序中找到内存泄漏。我对此有一些经验,但希望就此方法论/战略提出建议。欢迎任何参考和建议。 关于我们的情况: 堆转储大于1 GB 我们有5次堆放场。 我们没有任何测试案例可以激发这一点。仅在使用至少一个星期后,它才会在(大规模)系统测试环境中发生。 该系统建立在内部开发的传统框架上,该框架具有许多设计缺陷,以至于无法将它们全部计算在内。 没有人深入了解该框架。它已被

  • 本文向大家介绍粗略分析Python中的内存泄漏,包括了粗略分析Python中的内存泄漏的使用技巧和注意事项,需要的朋友参考一下 引子 之前一直盲目的认为 Python 不会存在内存泄露, 但是眼看着上线的项目随着运行时间的增长 而越来越大的内存占用, 我意识到我写的程序在发生内存泄露, 之前 debug 过 logging 模块导致的内存泄露. 目前看来, 还有别的地方引起的内存泄露. 经过一天的

  • 然而,我注意到VisualVM将在堆转储之前执行完整的GC,这将清理旧的Gen,在这种情况下,堆转储将是无用的。 我还尝试使用以下命令: jmap-dump:live,format=b,file=heap.bin

  • 我并不了解Java特别是Java调试,但在Jenkins中使用Monitoring进行堆转储,然后在Eclipse中使用MAT对其进行解码,显示总内存使用量为169.4MB,而在Jenkins中Monitoring似乎经常使用内存,GCs也经常运行。-XMX是4G。 为什么我只有169.4MB的mat?可能是因为在进行转储之前,Jenkins执行了GC吗?如果是,我是否可以避免它以看到完整的内存转