首页 > 代码库 > Shallow vs. Retained Heap
Shallow vs. Retained Heap
Shallow Heap和Retained Heap这两个名词在Java内存分析时经常遇到。本博文是Eclipse Memory Analyzer中关于Shallow Heap和Retained Heap帮助文档的翻译。
Shallow Heap是被一个对象消费的内存。在一个对象中,引用属性需要32或者64bits(根据OS体系结构),Integer属性需要4 bytes, Long属性需要8 bytes等等。根据Heap Dump的格式,这个大小可能会被调整(例如,对齐到8字节等等)到一个更有利于VM实际内存消费的模型。
X的Retained Set是指当X被垃圾回收时,所有会被GC回收的对象集合。
X的Retained Heap是指X的Retained Set中所有对象的Shallow Size和,例如因为X而存活的内存。
一般地说,一个对象的Shallow Heap是在Heap中这个对象的大小,而同一个对象的Retained Size是指当这个对象被垃圾回收时,将被释放的Heap内存总和。
从Leading Set角度来说,Retained Set是因为Leading Set变成不可达而被释放对象的集合。Leading Set可能是一个特定类的所有对象,或者被一个特定类加载器加载的所有类的对象,又或者是任意对象的组合。Retained Set包括了Leading Set中的对象和所有仅能通过Leading set中对象访问到的对象。Retained Size是在Retained Set中所有对象的总heap大小。
Shallow vs. Retained Heap
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。