【深刻淺出-JVM】(8):TLAB

概念

TLAB(Thread Local Allocation Buffer)線程本地分配緩衝區(線程私有分配區,私有分配,公共查看),佔用 Eden 區(缺省 Eden 的1%),默認開啓,JVM 會爲每個線程分配一塊 TLAB 區域,避免堆對象共享形成的多線程線程同步。多線程

背景

優化多線程堆空間分配對象指針碰撞問題優化

侷限性

  1. TLAB空間通常不會太大,大對象直接進堆
  2. TLAB容許空間浪費,致使Eden區不連續,觸發 GC

分配策略

一個 100KB 的 TLAB 區域,若是已經使用了 80KB,當須要分配 30KB 的對象時,虛擬機有 2 種選擇:1. 廢棄當前 TLAB 2.將 30KB 對象分配到堆上,保留當前 TLAB 給小於 20KB 的對象分配線程

開啓命令

-XX: +UseTLAB (默認開啓)指針

相關文章
相關標籤/搜索