JVM GC基础TLAB-Thread Local Allocation Buffer

是什么?

从内存模式角度,TLAB是对Eden区进一步的划分,JVM为每个线程都分配了一个私有的缓存区域。

JVM GC基础TLAB——Thread Local Allocation Buffer

为什么?

  • 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据,需要加锁。
  • 对象实例创建频繁,在并发环境下,从堆分配,可能导致线程不安全

有什么用?

避免了共享堆区的加锁分配操作,加快了内存分配速度。

说明

TLAB空间有限(非常小,只有Eden空间的1%,这个大小可以调整),所以不是所有的对象都在其上分配,但是TLAB依然是内存分配的首选。

如果在TLAB上分配失败,会从Eden空间进行分配内存。

JVM GC基础TLAB——Thread Local Allocation Buffer

其他语言也有类似的优化,比如Go里面也有类似的优化,mcache线程私有,不需要加锁,没有线程安全问题,可以快速分配内存。

JVM GC基础TLAB——Thread Local Allocation Buffer

基础   JVM   GC
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章