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

概念

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

背景

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

侷限性

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

分配策略

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

開啓命令

-XX: +UseTLAB (默認開啓)線程


感謝您的耐心閱讀,若是您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是做者寫做最大的動力。指針

做 者 : @mousycodercode

原文出處 : http://mousycoder.com/thinking-in-jvm/8/對象

相關文章
相關標籤/搜索