C 节点的子树就是所有被 C 支配的节点的集合,也称为 C 的 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 Retained Set。
由图可以看出,C 是 E 的直接支配节点,所以 C 的上级支配节点 B 也可以支配 E。
dump 分析初步
首先用 MemoryAnalyzer 工具打开 dump 文件。
从整体情况可以看出,1.6 gb 的堆内存,有大对象占了 1.1g。
怀疑是有内存泄漏,我们通过 Leak Suspect Report 报告查看
内存泄漏分析报告显示有两项问题:
-
一是 WebappClassLoader 类加载器装载的 A.A[][] 对象占了约 1.2g(70.40%)。
-
二是一个名为 TP-Processor9 的线程持有本地变量多达 337M(占了 19.58%)。
通过分析报告,我们初步可以推断出 OOM 的问题应该出在这两个地方,我们逐个击破。