JVM:浅堆、深堆和保留集
Java JVM About 527 words浅堆
Shallow Heap
。
浅堆是指一个对象所消耗的内存。
在32
位系统中,一个对象引用会占据4
个字节,一个int
类型会占据4
个字节,long
型变量会占据8
个字节,每个对象头需要占用8
个字节。
在64
位系统中,一个对象引用会占据8
个字节,但Java8
默认开启指针压缩(-XX:+UseCompressedOops
),压缩后的对象引用大小为4
个字节。
保留集
Retained Set
对象A
的保留集指当对象A
被垃圾回收后,可以被释放的所有的对象集合(包括对象A
本身),即对象A
的保留集可以被认为是只能通过对象A
被直接或间接访问到的所有对象的集合。通俗地说,就是指仅被对象A
所持有的对象的集合。
深堆
Retained Heap
深堆是指对象的保留集中所有的对象的浅堆大小之和。
注意
浅堆指对象本身占用的内存,不包括其内部引用对象的大小。一个对象的深堆指只能通过该对象访问到的(直接或间接)所有对象的浅堆之和,即对象被回收后,可以释放的真实空间。
对象的实际大小
对象的实际大小定义为一个对象所能触及的所有对象的浅堆大小之和,也就是通常意义上我们说的对象大小。与深堆相比,似乎这个在日常开发中更为直观和被人接受,但实际上,这个概念和垃圾回收无关。
Views: 1,483 · Posted: 2022-05-26
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...