使用MAT时的Shallow Size和 Retained Size的区别(二)

理解VisualVM中的保留大小(Retained Size)

https://www.jianshu.com/p/aaddf00a1d83

 

Retained size of an object is its shallow size plus the shallow sizes of the objects that are accessible, directly or indirectly, only from this object. In other words, the retained size represents the amount of memory that will be freed by the garbage collector when this object is collected.

如果你尝试使用 VisualVM 分析dump文件的时候,你会发现有些对象的 Retained Size 居然是0,这个0就推翻了上面那种分析方法的的结论,觉得无论什么样的对象肯定是会有 Shallow Size 的,不可能为0。

通过分析最后可以这样理解:针对不可达对象,也就是可以完全被清除的对象,Retained Size 都是0

好多人是简单的将保留大小描述为,该对象本身和其直接引用或者间接引用的对象的大小的总和这种理解是片面的




posted on 2023-04-04 16:39  silyvin  阅读(94)  评论(0编辑  收藏  举报