概念
解决标记清除算法的效率问题
复制算法主要针对java堆(新生代)
图示

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

如果Eden不够了,会使用Survivor。这个Survivor类似于上图中的两个空间,上图中的两个空间都是Survivor。这样使用的话内存不会浪费太多,始终有90%的空间是可以用来创建对象的,而剩下的10%用来存放回收后存活的对象。
优缺点
优点:在存活对象不多的情况下,性能高,能解决内存碎片和java垃圾回收算法之-标记清除 中导致的引用更新问题。
缺点: 会造成一部分的内存浪费。不过可以根据实际情况,将内存块大小比例适当调整;如果存活对象的数量比较大,coping的性能会变得很差。
本文探讨了Java垃圾回收中的复制算法,如何通过将新生代分为Eden和Survivor区域来提高效率并减少内存浪费。在对象存活率低的情况下,此算法表现出色,解决了标记清除算法的效率问题和内存碎片化。
5万+

被折叠的 条评论
为什么被折叠?



