一:对分配内存空间的动作进行同步处理,实际上虚拟机采用CAS和失败重试的方式保证更新操作的原子性
二:把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在java堆中预先分配一小块内存,哪个线程要分配内存,就在该线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才需要同步锁定。
注:1.TLAB(Thread Local Allocation Buffer),即本地线程分配缓冲。
2.虚拟机是否使用TLAB,可以通过-XX:+/-UseTLAB参数来设定。
一:对分配内存空间的动作进行同步处理,实际上虚拟机采用CAS和失败重试的方式保证更新操作的原子性
二:把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在java堆中预先分配一小块内存,哪个线程要分配内存,就在该线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才需要同步锁定。
注:1.TLAB(Thread Local Allocation Buffer),即本地线程分配缓冲。
2.虚拟机是否使用TLAB,可以通过-XX:+/-UseTLAB参数来设定。