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

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

我如何执行内存分析的这个堆转储在 IntelIJIDEA?

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

分析的基本结果会告诉我内存中每个对象每个类的数量,这样我就可以开始调试内存泄漏了。

140441 次浏览

您可以从这里安装 JVisualVM 插件: https://plugins.jetbrains.com/plugin/3749?pr=

这将允许您分析插件中的转储。

您还可以使用 VisualVM 启动器从 IDEA 内部启动 VisualVM。 Https://plugins.jetbrains.com/plugin/7115?pr=idea 我个人觉得这样更方便。

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

在插件存储库中还有一个“ JVM 调试器内存视图”,可能会很有用。

你可以运行“ JavaVisualVM”,它位于 jdk/bin/jvisualvm.exe

这将打开一个 GUI,使用“ File”菜单-> “ Load...”,然后选择您的 * . hprof 文件

够了,你完了!

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

使用方法:

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



获取 VisualVM:

从这里下载 VisualVM: https://visualvm.github.io/

你还需要下载 Intellij 的插件: enter image description here

然后你会在 intellij 中看到另外两个新的橙色图标:enter image description here

用橙色的应用程序运行之后,在 VisualVM 中,您将在左侧看到您的进程,在右侧看到数据。坐一会儿,学习一下这个工具,它非常强大: enter image description here



让 Eclipse 的内存分析工具(Memory Analysis Tool,MAT)成为一个独立的工具:

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

看起来是这样的: enter image description here enter image description here

希望能有帮助!

用于 Intellij Ideas 的 VisualVM 插件

enter image description here

IntelliJ IDEA 2021.2开始,有一个叫做 打开外部分析报告的功能: enter image description here

您可以通过以下两种方式查看堆转储:

  1. 从主菜单查看 > 工具窗口 > 侧写师,然后单击 < strong > 打开快照
  2. 从主菜单运行 > 打开分析器快照 > 张嘴
  3. 将堆转储文件拖到 IntelliJ 窗口中