java对象占用大小
以ArrayList对象为例,使用jol进行分析
public static void main(String[] args){
System.out.println(ClassLayout.parseInstance(new ArrayList()).toPrintable());
}
输出
java.util.ArrayList object internals:
OFFSET SIZE TYPE DESCRIPTION VALUE
0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1)
4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0)
8 4 (object header) dc 16 e2 27 (11011100 00010110 11100010 00100111) (669128412)
12 4 int AbstractList.modCount 0
16 4 int ArrayList.size 0
20 4 java.lang.Object[] ArrayList.elementData []
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
非数组对象,对象头占12字节。
int类型实例成员modCount(继承自父类)占4字节
int类型实例成员size占4字节
对象类型实例成员elementData占4字节
总共24,是8的整数倍不需要对齐填充