首页 > 代码库 > 记一次对java对象在内存中的分析
记一次对java对象在内存中的分析
java 对象 占内存大小 计算方式 及 常用类型的占用
HotSpot的对齐方式为8字节对齐 ----计算公式:(对象头 + 实例数据 + padding) % 8等于0且0 <= padding < 8
Hotspot 机 中 普通对象
32位 对象头 占 8个字节 引用类型 占 4字节
64位 对象头 占 16个字节 引用类型 占 8字节
64位中
空对象数组 对象头 占 24 增加一个长度 增加 一个引用类型的长度 64位中是 8
空的基本数据类型数组 对象头 占 24 增加一个长度 增加一个基本数据类型自身的 长度
64位 压缩后
普通对象 对象头 占 12个字节 引用类型 占 4字节
数组对象压缩后 对象头 占 16
增加一个长度 增加一个基本数据类型自身的 长度
----因为 java 的跨平台性,所以基本类型的数据在32位和64位上占内存大小是一样的
1Bytes = 8bit cpu一次能处理的数据位数----32位和64位----4字节和8字节
对象头的内存布局
对象自身的运行数据 占一次cpu 指向对象实例的指针 占 一次cpu
数组比较特殊,因为要把数据长度存到头部,所以又要占 一次cpu
以上可以看出 普通对象的对象头 有两部分 而 数组对象有三部分
可以推算出
32 位 普通对象 的对象头 是 8 数组 的对象头是 12
64 位 普通对象 的对象头 是 16 数组 的对象头是 24
记一次对java对象在内存中的分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。