bump-the-pointer VS TLABs


Fast Allocation

    As you will see from the garbage collector descriptions below, in many cases there are large contiguous blocks
of memory available from which to allocate objects. Allocations from such blocks are efficient, using a simple
bump-the-pointer technique. That is, the end of the previously allocated object is always kept track of. When a
new allocation request needs to be satisfied, all that needs to be done is to check whether the object will fit in
the remaining part of the generation and, if so, to update the pointer and initialize the object.
    For multithreaded applications, allocation operations need to be multithread-safe. If global locks were used to
ensure this, then allocation into a generation would become a bottleneck and degrade performance. Instead,
the HotSpot JVM has adopted a technique called Thread-Local Allocation Buffers (TLABs). This improves
multithreaded allocation throughput by giving each thread its own buffer (i.e., a small portion of the
generation) from which to allocate. Since only one thread can be allocating into each TLAB, allocation can take
place quickly by utilizing the bump-the-pointer technique, without requiring any locking. Only infrequently,
when a thread fills up its TLAB and needs to get a new one, must synchronization be utilized. Several techniques
to minimize space wastage due to the use of TLABs are employed. For example, TLABs are sized by the allocator
to waste less than 1% of Eden, on average. The combination of the use of TLABs and linear allocations using the

bump-the-pointer technique enables each allocation to be efficient, only requiring around 10 native instructions.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值