标识内存泄漏

先决条件:

内存泄漏是程序的动态存储器分配逻辑中的错误,该错误导致它无法回收已废弃的内存。即,没有回收不再需要的对象。如果存在出乎意料多的这样的实例,则可能暗示存在内存泄漏。如果内存泄漏严重,会导致应用程序因耗尽内存而崩溃。

内存泄漏是由于对象继续保持对其它对象的引用而使得垃圾回收不能回收被引用的对象而导致的。“对象引用”表可以用来帮助标识这样的引用。

在应用程序中查找内存泄漏

要标识应用程序中的内存泄漏,遵循下列步骤:

  1. 在“概要分析和记录”透视图中,在“概要分析监视器”视图中选择监视器或代理程序。 
  2. 右键单击并选择收集对象引用。现在将收集对象引用。
  3. 再次右键单击,然后选择打开方式 > 对象引用。“对象引用”表打开。
  4. 选择本地菜单图标 具有三角图标的按钮 并选择显示引用对象
  5. 检查对象列表和对它们的引用的数目。具有引用的对象存在潜在的内存泄漏问题。 

在面向事务的操作中查找内存泄漏

此过程可以帮助标识程序中的一个阶段,该阶段创建新对象但不释放它们,这就不能通过垃圾回收除去它们。例如,程序创建了一个对话框窗口,在关闭该窗口之后,与此对话框相关的对象继续被占有。要标识面向事务的操作中的内存泄漏,遵循下列步骤:

  1. 在“概要分析和记录”透视图中,在“概要分析监视器”视图中选择监视器或代理程序。 
  2. 在执行所讨论的操作前收集对象引用。右键单击并选择收集对象引用。现在将收集对象引用。
  3. 右键单击监视器,然后选择打开方式 > 对象引用。检查“对象引用”表并注意创建的对象引用。
  4. 运行想要检查的操作。
  5. 完成操作后收集对象引用。再次右键单击并选择收集对象引用
  6. 右键单击监视器,然后选择打开方式 > 对象引用。检查“对象引用”表并注意创建的对象引用。在“对象引用”表中,将把在对引用的两次对象引用收集的时间间隔内创建的但是不能收集的对象标记为新对象。
  7. 要检查特定对象的引用,遵循下列步骤:
    1. 从“对象引用”表的下拉菜单中,选择显示被引用的对象
    2. 选择对象类,然后展开该项。
    3. 标识那些阻止回收新对象的引用。

 

相关概念
概要分析工具概述
概要分析资源
对象引用表

相关任务
对应用程序进行概要分析
启动或连接 Java 进程