jvm原理二:对象创建在虚拟机中是非常平凡的行为,在并发情况下,若两个对象同时申请同一地址,如何解决

解决方法:

(1)对分配内存空间的动作进行同步处理——实际上虚拟机采用CAS配上失败重试的方式保证更新操作的原子性。

(2)把内存分配的动作按照线程划分在不同的空间之中执行,即每个线程在java堆中预先分配一小块内存,称为本地线程分配缓冲(Thread Local Allocation Buffer, TLAB)。哪个线程要分配内存,就在哪个线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才需要同步锁定。

猜你喜欢

转载自blog.csdn.net/dancheng1/article/details/79982293