java内存如何布局,如何运行,首先说下内存的几块局域
1.对象头(Header)
1.1 . 运行时数据(哈希码、GC分代标识、锁状态标识、偏向线程ID、偏向时间戳),32bit和64bit
对象头信息是与对象自身定义属性以外的内存开销
1.2. 类型指针 指向类元数据的指针,辨别是那个类的实例。不是必须指针,如数组
2. 实例部分:对象存储有效信息的区域
默认分配策略:longs/doubles、ints、shorts/chars、byte/Booleans、oops 相同宽度的字段会分配到一起。
3. 对齐填充:8字节的整数倍,占位符的作用
在java对象访问,存在两种方式
其一 :句柄访问,先访问句柄池,在访问实例池,在访问方法区
其二 :直接指针访问,对象类型指针,在访问方法区,虚拟机采用该方式访问