jvm-性能调优(如何计算对象大小)

java对象在jvm中分配是按:

a:对象头

     Mark Word

         32位 4个字节

          64位  8个字节

     类型指针:这个对象是基于那个kclass生成的

     数组长度:如果对象是数组则在这里存储,占4个字节,如果不是数组则不再这里存储,就不占字节数

b:实例数据:指定是对象的成员属性所占的大小

c:数据填充:是不满8位就填充0,按8位计算:比如4位那就补0,按8位,如果是12位,则补0,16位,至于为啥这样

是因为jvm 底层用c++实现的,这么规定算法更容易实现吧

-----------------------------------------------------------------------------

oop指针压缩:开启后对象指针(类型指针)占4个字节,不开启占8个字节,jdk1.6之后默认是开启的

jvm-性能调优(如何计算对象大小)

 

有一种特殊情况 他是基于头部进行对齐填充的

jvm-性能调优(如何计算对象大小)