垃圾回收机制策略二(复制算法)

本文探讨了Java垃圾回收中的复制算法,如何通过将新生代分为Eden和Survivor区域来提高效率并减少内存浪费。在对象存活率低的情况下,此算法表现出色,解决了标记清除算法的效率问题和内存碎片化。

概念

解决标记清除算法的效率问题

复制算法主要针对java堆(新生代)


图示

反复执行这个过程,虽然效率问题解决,但出现新的问题。内存区域只用一半,导致严重浪费为了解决浪费,我们把新生代分为三部分。

如果Eden不够了,会使用Survivor。这个Survivor类似于上图中的两个空间,上图中的两个空间都是Survivor。这样使用的话内存不会浪费太多,始终有90%的空间是可以用来创建对象的,而剩下的10%用来存放回收后存活的对象。


优缺点

优点:在存活对象不多的情况下,性能高,能解决内存碎片和java垃圾回收算法之-标记清除 中导致的引用更新问题。

缺点: 会造成一部分的内存浪费。不过可以根据实际情况,将内存块大小比例适当调整;如果存活对象的数量比较大,coping的性能会变得很差。


 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值