【深入浅出-JVM】(8):TLAB
欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0711/7260.html 1190000019723850
概念
TLAB(Thread Local Allocation Buffer)线程本地分配缓冲区(线程私有分配区,私有分配,公共查看),占用 Eden 区(缺省 Eden 的1%),默认开启,JVM 会为每一个线程分配一块 TLAB 区域,避免堆对象共享造成的多线程线程同步。
背景
优化多线程堆空间分配对象指针碰撞问题
局限性
- TLAB空间一般不会太大,大对象直接进堆
- TLAB允许空间浪费,导致Eden区不连续,触发 GC
分配策略
一个 100KB 的 TLAB 区域,如果已经使用了 80KB,当需要分配 30KB 的对象时,虚拟机有 2 种选择:1. 废弃当前 TLAB 2.将 30KB 对象分配到堆上,保留当前 TLAB 给小于 20KB 的对象分配
开启命令
-XX: +UseTLAB (默认开启)