接上文PLAB---》
可以看到和TLAB很像,PLAB即 Promotion Local Allocation Buffers。用在年轻代对象晋升到老年代时。
-
在多线程并行执行YGC时,可能有很多对象需要晋升到老年代,此时老年代的指针就"热"起来了,于是搞了个PLAB。
-
先从老年代 freelist(空闲链表)申请一块空间,然后在这一块空间中就可以通过指针加法(bump thepointer)来分配内存,这样对freelist竞争也少了,分配空间也快了。
大致就是上图这么个思想,每个线程先申请一块作为PLAB,然后在这一块内存里面分配晋升的对象。这和TLAB的思想相似。