【深刻浅出-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 (默认开启)指针

相关文章
相关标签/搜索