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

最近在看《深入理解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.总空间占用大小,要计算对象中每一个对象的大小,引用中的对象也要计算,再累加获得总空间。

第一行的文章里讲得很清晰了,以上只是总结一下,希望能帮到你。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值