llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

分析 JVM 堆中的对象

在调试时,您可以使用 内存 选项卡查看堆中的对象。 IntelliJ IDEA 允许您跟踪单个类实例并分析导致对象生成或保留的条件。

这些信息对于检测内存泄漏及其原因非常有用。 有时,仅通过代码检查可能无法提供线索,因为某些错误很容易被忽略。 例如,内部类可能会阻止外部类变为可进行垃圾回收,从而可能最终导致 OutOfMemoryError。 在这种情况下,结合 内存 选项卡与 显示引用对象选项,您可以轻松发现泄漏。

此外,检查内存使用情况可以帮助您更好地了解底层的运行情况,并通过最小化不必要对象的创建来优化程序。

隐藏/显示 Memory 选项卡

  • 点击 布局选项按钮 ,在 调试 工具窗口的右上角,然后点击 内存。

内存选项卡

内存 选项卡显示以下信息:

获取有关对象数量的信息

  1. 在 断点处停止或 手动挂起程序。

  2. 在 内存 选项卡中,点击 加载类 (为了性能, 内存 选项卡仅按需收集数据)。

    所有加载的类列表会显示在 内存 选项卡上。 对应的活动对象数量显示在 计数 列中。

排序和查找类

  • 若要对类进行排序,请点击相应的标题(类、 计数 或 差异)。 点击已选择的标准可更改顺序(升序/降序)。

  • 若要查找类,请开始输入其名称。 输入时,过滤器会动态应用。

获取两个执行点之间的差异

有时知道自某个时间点以来创建了多少对象是有用的。 为此,您可以收集两次信息,并使用内置的 差异 功能进行比较。

  1. 在起始点 收集实例数据。

  2. 继续程序执行或 逐步执行代码。

  3. 在第二点 收集实例数据。 差异 列显示实例数量是否已更改。

    内存选项卡中的差异

查看实例

  • 双击 内存 选项卡上的类。

    一个对话框将打开,列出所选类的所有活动实例。 您可以浏览每个对象的内容,并使用条件筛选列表。

    例如,要获取所有空 字符串 对象的列表,请在 内存 页签上双击 字符串 并在 条件 字段中输入 this.isEmpty()。

    在 Memory 选项卡中过滤实例

计算保留大小

对于每个类实例,您可以计算其保留大小。 Retained size 是对象本身占用的内存量,加上它引用且未被其他对象引用的所有对象的内存量。

这在估算类或其特定实例的内存占用时非常有用。 此外,这在决定使用哪种数据结构时可能会很有用(例如, ArrayList 与 LinkedList)。

  1. 在运行应用程序之前,请确保在 附加内存代理 中启用了 设置 | 构建,执行,部署 | 调试器 选项。

  2. 当 查看类的实例时,右键点击实例,然后点击 计算保留大小。

跟踪新实例

除了获取实例数量,您还可以记录创建的特定实例及其在调用堆栈中的位置。

  1. 右键点击类并选择 跟踪新实例。

    内存 选项卡现在将存储从此刻起创建的所选类实例的信息。 当有新实例时,它们的数量将会出现在 差异 列的括号中。

  2. 要查看新实例的列表,请点击 差异 列中的数字。 在打开的对话框中,您可以浏览每个对象的内容,并查看调用相应构造函数的线程的堆栈跟踪。

自定义视图

内存视图设置 中的选项可以让您自定义 内存 选项卡的操作方式:

  • 要隐藏没有实例的类,请使用 仅显示实例 选项。 默认情况下, 内存 选项卡显示所有已加载的类,无论它们是否已被实例化。

  • 如果您只对实例数量发生变化的对象感兴趣,请点击并选择 仅显示非零差异。 这会移除所有总数不变的对象。

  • 要隐藏您不跟踪其新实例的类,请使用 仅显示跟踪的类 选项。

  • 为了使 内存 选项卡在隐藏时也能跟踪所选类的新实例,请使用 启用隐藏内存视图追踪 选项。 此选项可能会增加被调试应用程序的一些开销。

  • 如果您希望每次程序挂起时 内存 选项卡都能收集数据(无需点击 加载类 ),请使用 调试器停止时更新已加载的类 选项。 此功能可能会增加开销,从而影响单步执行性能。

2026年 11月 3日