从内存模式角度,TLAB是对Eden区进一步的划分,JVM为每个线程都分配了一个私有的缓存区域。
避免了共享堆区的加锁分配操作,加快了内存分配速度。
TLAB空间有限(非常小,只有Eden空间的1%,这个大小可以调整),所以不是所有的对象都在其上分配,但是TLAB依然是内存分配的首选。
如果在TLAB上分配失败,会从Eden空间进行分配内存。
其他语言也有类似的优化,比如Go里面也有类似的优化,mcache线程私有,不需要加锁,没有线程安全问题,可以快速分配内存。
留言与评论(共有 0 条评论) “” |