对象内存分配方式

本文讨论了Java虚拟机中的堆内存分配机制,包括堆内存是否规整,以及堆内存规整与否对分配方式(指针碰撞与空闲列表)的影响。重点介绍了垃圾收集器在堆内存整理中的作用。
摘要由CSDN通过智能技术生成

虚拟机为新对象分配内存,从堆中划出一块确定大小的内存,因为对象所需内存的大小在类加载完后可以完全确定。

堆内存是否规整:

  • 堆内存规整:已使用的内存在一边,未使用内存在另一边。
  • 堆内存不规整:已使用内存和未使用相互交错。

堆内存是否规整是由垃圾收集器是否带有压缩整理功能决定的。

内存分配方式:

分配方式的选择 取决于 Java堆内存是否规整:

  • 指针碰撞方式:
    • 堆内存绝对规整。
    • 分配过程:将已使用内存和为使用内存之间放一个分界点的指针,分配内存时,指针会向未使用内存方向移动,移动一段与对象大小相等的距离。

  • 空闲列表:
    • 堆内存不规整。
    • 分配过程:虚拟机内部维护了一个记录可用内存块的列表,在分配时从列表找一块足够大的空间划分给对象实例,并更新列表上的记录。

Java堆是否规整 由所采用的垃圾收集器是否带有压缩整理功能决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值