创建对象时的内存分配算法

判断空闲内存

根据内存是否规整使用不同的方法

内存规整:指针碰撞

在空闲区域,按照分配顺序一个接着一个往后排。常用于自带内存整理的垃圾收集器。

内存不规整:空闲列表

虚拟机会维护一个空闲内存列表,会把对象分配到空闲的内存上。

空闲列表的优化

在CMS的实现里面,为了能在多数情况下分配得更快,设计了一个叫作Linear Allocation Buffer的分配缓冲区,通过空闲列表拿到一大块分配缓冲区之后,在它里面仍然可以使用指 针碰撞方式来分配。

多个线程同时争抢一个内存位置

CAS方式

如果分配内存失败重试

TLAB

为每个线程在堆划分一个私有区域,当私有区域用完后,在公共区域使用CAS方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值