直接指针和 句柄方式
一个直接寻址:访问速度快
一个是间接寻址:垃圾回收起来比较稳定
对象怎么分配?
对象首先会尝试在栈上分配,在栈上的对象有一个好处,进行垃圾回收的时候不需要垃圾回收器处理,直接就弹出去了
如果对象很大的话,就会分配放入老年代,需要FGC才能回收
TLAB: ThreadLocalAllocationBuffer 线程本地分配
在多个线程同时new对象的时候,新对象都会存储在Eden区,这个时候就会产生争夺资源的情况,所以我们需要对线程进行同步优化:
我们在Eden中为每一个线程开辟了一个很小的空间,默认是1%,叫做线程私有ThreadLocalAllocationBuffer ,这样就不用同步,不会争夺资源
然后新生代的Eden区会进行垃圾清除GC,被清除了,就直接删除了,没有清除就进入幸存者 S1区,然后经过多次GC,看AGE到了没有,够age了就进入老年区