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

vik*_*eve 50 java intellij-idea memoryanalyzer jmap heap-dump

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

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

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

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

Meo*_*Meo 38

最好的东西是Memory Analyzer(MAT),IntelliJ没有任何捆绑堆转储分析器.

  • MAT有IntelliJ的插件吗? (7认同)
  • @ericn 你使用 IntelliJ Ultimate 吗?根据 https://www.jetbrains.com/help/idea/cpu-profiler.html,分析器是 IntelliJ Ultimate 的一项功能。 (7认同)
  • 不,MAT 是使用 Eclipse 的框架编写的,因此我看不出它很容易插入 IntelliJ。然而,说实话,将 MAT 作为独立应用程序运行可能会更好。 (2认同)
  • 从 2020.1 开始,IntelliJ *确实*支持分析堆转储:https://www.jetbrains.com/help/idea/analyze-hprof-memory-snapshots.html (2认同)

nbt*_*btk 28

我想将上面的答案更新到2018年并说要使用VisualVM和Eclipse MAT.

如何使用:

VisualVM用于实时监控和转储堆.您还可以用很强的功能分析那里的堆转储,但是MAT有更多的功能(例如自动分析来查找泄漏),因此,我将VisualVM转储输出(.hprof文件)读入MAT.



获取VisualVM:

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

您还需要下载Intellij的插件: 在此输入图像描述

然后你会在intellij中看到另外两个新的橙色图标: 在此输入图像描述

使用橙色应用程序运行应用程序后,在VisualVM中,您将在左侧看到您的进程,在右侧看到数据.坐一段时间学习这个工具,它非常强大: 在此输入图像描述



将Eclipse的内存分析工具(MAT)作为独立工具获取:

点击此处下载:https://www.eclipse.org/mat/downloads.php

这就是它的样子: 在此输入图像描述 在此输入图像描述

希望能帮助到你!


小智 18

从IntelliJ IDEA 2021.2开始,有一个名为“打开外部分析报告”的功能。查看器的 UI 如下所示: 在此输入图像描述

您可以通过以下任一方式查看堆转储:

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


Kat*_* A. 9

您还可以使用VisualVM Launcher从IDEA中启动VisualVM. https://plugins.jetbrains.com/plugin/7115?pr=idea 我个人认为这更方便.

  • 此插件仅启动VisualVM并在其中打开所需的应用程序.它与你的案子无关.您可以手动启动VisualVM并打开转储. (2认同)

小智 6

您只需运行位于以下位置的“Java VisualVM”即可:jdk/bin/jvisualvm.exe

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

就是这样,你就完成了!

  • 请改写,使用一些格式(https://stackoverflow.com/editing-help#comment-formatting)并添加一些解释。此外,您可能不想讨论您的名字,即使您不喜欢您的帐户名称。 (3认同)

Vic*_*cky 6

Intellij Idea 的 VisualVM 插件

在此输入图像描述


Den*_* M. 5

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

  • 该插件与 2017.1 之后的 IDEA 版本不兼容。内存视图在 IDEA 2017.1 中开箱即用。https://plugins.jetbrains.com/files/8537/screenshot_16824.png (4认同)