所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size. 这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释. Shallow Size 对象自身占用的内存大小,不包括它引用的对象. 针对非数组类型的对象,它的大小就是对象与它所有的成员变量大小的总和.当然这里面还会包括一些java语言特性的数据存储单元. 针对数组类型的对象,它的大小是数组元…