对象在内存中的存储布局
普通对象
- 8位的对象头 markword
- classpointer指针指向class文件的地址。
- 实例数据。
- 按8的倍数对齐
数组对象
- 对象头 markword
- classpointer
- 数组长度 4字节
- 数组数据
- 按8的倍数对齐
对象头的结构
32位解释
∫
对象怎么定位
- 句柄池。对象引用指向句柄池,句柄池包含2个指针,一个指向对象,一个指向.class文件
- 直接指针。对象引用直接指向new的对象,对象中的classpointer指向.class文件
没有优劣之分,看jvm实现
对象怎么分配
先分配到栈,栈分配不下就判断大不大,大就分配到堆内存,如果不大就线程本地分配