JVM:浅堆、深堆和保留集
Java JVM 大约 527 字浅堆
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
深堆是指对象的保留集中所有的对象的浅堆大小之和。
注意
浅堆指对象本身占用的内存,不包括其内部引用对象的大小。一个对象的深堆指只能通过该对象访问到的(直接或间接)所有对象的浅堆之和,即对象被回收后,可以释放的真实空间。
对象的实际大小
对象的实际大小定义为一个对象所能触及的所有对象的浅堆大小之和,也就是通常意义上我们说的对象大小。与深堆相比,似乎这个在日常开发中更为直观和被人接受,但实际上,这个概念和垃圾回收无关。
阅读 1051 · 发布于 2022-05-26
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Gradle 生成 gradlew 设置版本及属性阅读 5960
-
Spring Boot 统一修改 Controller 返回值阅读 1263
-
Vue 页面切换时弹出确认框阅读 3570
-
Spring、SpringMVC、Spring Boot 中的注解阅读 1226
-
Charles 抓包工具下载,安装及破解阅读 1581
-
Spring Boot Controller 路径匹配规则阅读 5100
-
javac 错误: 编码 GBK 的不可映射字符阅读 1533
-
macOS 安装 Redis阅读 389
-
Mac 通过 SSH 连接远程服务器阅读 2689
-
HTML 输入框 input 清空按钮阅读 222