您的位置:首页 > 编程语言 > Java开发

一个java对象占多少个字节的总结和理解

2018-01-26 13:59 405 查看
最近在看《深入理解Java虚拟机》和《Java并发编程的艺术》这两本书,里面都设计到了计算对象大小的内容,搞了两天终于弄清楚。

首先,参考了这篇文章《一个java对象占多少个字节?》,想彻底理解请先看篇文章,里面的工具已经验证过了,想弄明白最好自己跑一遍加深印象,看看JVM计算的和你计算的是不是一样。

接下来,上干货,各种类型分别占多少个字节(bytes):

计算方式:对象头+实例数据+对齐填充

类型占用字节数(bytes)
类型64位(无压缩)64位(压缩)
boolean11
byte11
short22
char22
int44
float44
long88
double88
普通对象头1612
数组对象头2416
reference(引用类型)84
注意:JVM默认是开启压缩参数的-XX:+UseCompressedOops
另:

计算对象本身占用大小对象总空间占用大小的区别:

1.本身占用大小,对象中除了基本类型之外,其他类型都按照引用来计算,不要计算引用中对象的大小。

2.总空间占用大小,要计算对象中每一个对象的大小,引用中的对象也要计算,再累加获得总空间。

第一行的文章里讲得很清晰了,以上只是总结一下,希望能帮到你。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jvm 对象 占用 字节