如何保障有序性
硬件如何保障:
乱序问题
如何保证特定的情况下不乱序
硬件的有序性保障
X86
Java的汇编指令
JVM的如何规范
前三步是Class对象没有load到内存才需要进行的过程,从第四步开始是new 的过程
2. 对象在内存的布局
ClassPionter指针表示实例对象指向他的Class对象的地址
对象的大小
使用:Agent:
object:16字节,对象头8字节,(默认压缩的)classpointer4字节,padding对齐四字节
数组:16字节,对象头8字节,(默认压缩的)classpointer4字节,数组长度四字节
classpointer不压缩是8字节
p对象:是32字节
我们注意他的name属性:为四字节,但是他其实是8字节的,四字节的原因是因为这个参数:-XX:+UseCompressedOops 是开启的,把普通对象引用压缩成四字节
Oops:普通对象引用
classPointer:Class对象的引用
3. 对象头具体包括什么
对象头有两位标志对象有没有被锁定,一位标志被哪个线程占有,即偏向锁,还有两位是GC位,标志被垃圾回收器回收了几次
下面的图是32位的
因为分代年龄只有四位表示
4. 对象怎么定位
句柄池(在垃圾回收算法中效率更高):通过一个间接指针(有两个,一个指向真正的对象,一个指向class对象)
(hotspot的实现,可以直接找到对象,找对象效率更高)直接指针:就是指针指向对象,然后这个对象指向了这个对象的class对象
- 对象怎么分配(GC相关)