java对象大小

2017-04-13  本文已影响0人  我是一个binder

java对象包括对小偷,实例数据和对齐填充

任何一个对象都有对象头,对象头在32位系统上占用,64位系统上占用16bytes

对象头的结构

| mark word | klass pointer | array size (opt) | padding

空对象的不包含任何成员变量,其大小即对象头大小:

在 32 位 JVM 上,占用 8 字节;

在未开启UseCompressedOops的 64 位 JVM 上,16 字节。(感谢评论区的@SingleCool纠正)

在开启UseCompressedOops的 64 位 JVM 上,12 + 4 = 16;

数组也是对象,故有对象的头部,另外数组还有一个记录数组长度的 int 类型,随后是每一个数组的元素:基本数据类型或者引用。8 字节对齐

https://www.liaohuqiu.net/cn/posts/caculate-object-size-in-java/

上一篇 下一篇

猜你喜欢

热点阅读