概述
大家在用 jvm 诊断工具,比如 Eclipse MAT 或者 Jprofiler 分析堆内存的时候,都会看到一些概念或者关键词,如 Shallow Heap, Retained Heap, Dominator Tree 等,你们知道他们是干嘛的吗?
Eclipse MAT 相关截图:
jprofile 相关截图:
虽然上面两个工具有点差异,但是他们表达的都是同一个意思。
浅堆(Shallow Heap、Shallow Size)
浅堆是指一个对象所消耗的内存。在 32 位系统中,一个对象引用会占据 4 个字节,一个 int 类型会占据 4 个字节,long 型变量会占据 8