利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
2009-12-24 00:00:00 来源:WEB开发网核心提示: 此 Analyzer 包含 Hashtable 的一个实例,此 Hashtable 包含 629 个 Chunk 实例,利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(7),这是 Analyzer 的内部类,每个 Chunk 实例包含一个
此 Analyzer 包含 Hashtable 的一个实例。
此 Hashtable 包含 629 个 Chunk 实例,这是 Analyzer 的内部类。
每个 Chunk 实例包含一个 ArrayList。
1000 个 Chunk 实例中的所有 ArrayLists 包含 500,000 个 String 实例,总计大小为 76 MB。
下一个 Chunk 实例包含 Hashtable 实例(大小为 49 MB)。
此 Hashtable 包含 629 个 Chunk 实例。
每个 Chunk 实例包含一个 ArrayList。
1000 个 Chunk 实例中的所有 ArrayLists 包含 314,500 个 String 实例,总计大小为 48 MB。
对象/类泄漏疑点
这个视图比聚合数据级泄漏疑点列表更加简单。对象/类泄漏疑点表(如图 6 所示)显示了泄漏根及其泄漏容器的列表,以及容器的总大小和所有泄漏单元的区域大小落差。如前所述,此列表应包含与聚合数据结构级别表(如图 5 所示)相同的顶级泄漏疑点。
图 6. 对象/类泄漏疑点
图 6 显示了与聚合数据结构泄漏疑点视图(如图 5 所示)中的前两个泄漏疑点相同的一点。总大小的差别是由于聚合数据结构级别视图使用汇总实例计数,对象/类泄漏疑点视图使用实际事例和大小计数。
使用泄漏疑点视图
为了阅读两个泄漏疑点视图中的信息,首先要从第一行开始阅读表格。由于识别漏洞极为复杂,因而应注意列表中的最后一个疑点,若其泄漏容器大小低于堆大小的 5-10%(如图 2 的 Analysis Summary 视图所示),则表示这根本不是泄漏。此类微不足道的泄漏应予以忽略。
更多精彩
赞助商链接