码迷,mamicode.com
首页 > 编程语言 > 详细

记一次对java对象在内存中的分析

时间:2017-06-05 11:32:10      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:基本类型   基本数据类型   指针   cpu   byte   布局   头部   实例   pad   

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对象在内存中的分析

标签:基本类型   基本数据类型   指针   cpu   byte   布局   头部   实例   pad   

原文地址:http://www.cnblogs.com/xiaojieblog/p/6943865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!