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之后默认是开启的
有一种特殊情况 他是基于头部进行对齐填充的