- 解释对象的创建过程?(半初始化)
- DCL要不要加volatile?(指令重排)
- 在内存中的存储布局?(对象与数组的存储不同)
- 对象头具体包括什么?(markword klasspointer) syncchronized锁信息
- 对象怎么定位?(直接、间接)
- 对象怎么分配?(栈上-线程本地-Eden-Old)
- Object o = new Object()在内存中占用多少字节?
- 新问题:为什么hotspot不适用c++对象来代表java对象?
- 新问题:Class对象是在堆还是在方法去?
问题3、在内存中的存储布局?
问题7、Object o = new Object()在内存中占用多少字节?
解答:占16个字节
markword 4字节+4字节
类型指针 4字节
需要被8整除 补齐 4字节
总共16字节
问题4、对象头具体包括什么?
解答:包含两个部分
- markword(4个字节)
- class pointor(4个字节)
markword包含:锁信息、hashCode、GC信息