解決方案一:對(duì)分配的內(nèi)存空間的動(dòng)作進(jìn)行同步處理。實(shí)際上虛擬機(jī)采用CAS配上失敗重試的方式保證更新操作的原子性。解決方案二:把內(nèi)存分配的動(dòng)作按照線程劃分在不同的空間之中進(jìn)行,即每個(gè)線程在Java堆中預(yù)先分配一小塊內(nèi)存,即本地線程分配緩沖(Thread Local Allocation Buffer,TLAB),哪個(gè)線程要分配內(nèi)存,就在哪個(gè)線程的TLAB上分配,只有TLAB用完并分配新的TLAB時(shí),才需要同步鎖定,。虛擬機(jī)是否使用TLAB,可以通過-XX:+/-UseTLAB參數(shù)來設(shè)定。