我使用 jmap
工具从我的Java应用程序中生成了一个堆转储,该应用程序已经运行了几天 -> 这导致了一个大的二进制堆转储文件。
如何在 IntelliJ IDEA 中对此堆转储执行内存分析?
我知道 Eclipse 和 Netbeans 有工具,但如果可能的话,我宁愿使用 IDEA。
基本的分析结果将告诉我每个对象在内存中的实例数量,按类别排序,以便我能够开始调试内存泄漏。
我使用 jmap
工具从我的Java应用程序中生成了一个堆转储,该应用程序已经运行了几天 -> 这导致了一个大的二进制堆转储文件。
如何在 IntelliJ IDEA 中对此堆转储执行内存分析?
我知道 Eclipse 和 Netbeans 有工具,但如果可能的话,我宁愿使用 IDEA。
基本的分析结果将告诉我每个对象在内存中的实例数量,按类别排序,以便我能够开始调试内存泄漏。
目前市面上最好的工具是Memory Analyzer (MAT),IntelliJ没有内置的堆转储分析器。
我想更新以上回答到2018年并建议同时使用VisualVM和Eclipse MAT。
VisualVM用于实时监控和dump heap。您还可以在其中分析堆转储文件,但是MAT拥有更多功能(例如自动分析以查找泄漏),因此我将VisualVM dump输出(.hprof文件)读入MAT。
在此处下载VisualVM:https://visualvm.github.io/
一旦您使用橙色图标之一运行应用程序,在VisualVM中,您会在左侧看到进程,右侧则是数据。花点时间学习这个工具,它非常强大:
下载链接: https://www.eclipse.org/mat/downloads.php
希望对你有所帮助!
从 IntelliJ IDEA 2021.2 开始,新增了一个名为“打开外部分析报告”的功能。如下图所示:
您可以通过以下任意一种方式查看堆转储文件:
你也可以使用VisualVM启动器在IDEA中启动VisualVM。我个人认为这更方便。
https://plugins.jetbrains.com/plugin/7115?pr=idea您可以运行位于 jdk/bin/jvisualvm.exe
的 "Java VisualVM" 工具。
这将打开一个GUI界面,使用 "文件" 菜单 -> "加载...",然后选择您的 *.hprof 文件。
就这样,完成了!