针对堆内存快照的分析,用于分析hprof文件所涉及到的知识总结

incomming references(传入引用)是指当前对象被谁引用,展示的是那些包含当前选择对象引用的对象,比如对象a引用了b,那么b的传入引用对象就是a,在Java中,传入引用一般还有当前对象的类对象,即在上面例子中的B.class;

outgoing references(传出引用)是指当前对象所持有的引用,比如对象b引用了对象c,那么b的传出引用就有c,在Java中,传出引用一般还有当前对象的类对象,即在上例中的B.class。

shallow size & retained size

大小测量分为三种:

浅层大小(Shallow Size) 不包括引用数组和实例的大小,而只包括相应指针的大小。 对于将所有对象都放在堆上的第一个对象集,浅层大小等于保留大小和深层大小。

保留大小(Retained Size)计算为浅层大小加上如果要删除当前对象集, 将被垃圾回收的所有对象的总大小。这个大小告诉您在一个对象集后面实际有多少内存。其中保留大小能回收的引用集是指当且仅当自身引用的对象集,因为只有这样的对象集在GC的时候能被可达性算法标记为可回收。

深层大小(Deep Size)计算为浅层大小加上所有引用对象的总大小。 在极端情况下,这个值可能占整个堆的很大百分比。

你可能感兴趣的:(jvm)