复制算法详解(定义优缺及算法思想)

复制算法详解(定义优缺及算法思想)-mikechen

复制算法是新生代的JVM垃圾回收算法,而且Java面试经常被问,下面我重点详解复制算法@mikechen

复制算法定义

复制算法,英文全称Copying Algorithm,是一种常见的JVM垃圾回收算法

 

复制算法优缺点

复制算法优点:

复制算法的优点是实现简单,只需要将存活对象复制到新的内存区域中即可,非常高效。

 

复制算法缺点:

需要更多的内存空间,因为JVM复制算法需要将存活对象复制到新的内存区域中,所以需要两倍的内存空间,这可能会导致内存空间的浪费。

 

复制算法思想

复制算法,如下图所示:

复制算法详解(定义优缺及算法思想)-mikechen

复制算法步骤,主要分为如下步骤:

第一步:标记出所有的存活对象

从根集合节点进行扫描,例如:线程栈中的对象、静态变量、寄存器中的指针等,标记出所有的存活对象,

 

第二步:复制对象到新内存

找出所有仍然存活的对象,并将这些存活的对象复制到一块儿新的内存,比如:上方图片下边的那一块儿绿色内存。

 

第三步:回收垃圾并被清除

当所有存活的对象都被复制到To区后,From区中的所有对象都可以被清除(图中上边的那一块儿内存)。

 

复制算法适合

复制算法适合垃圾回收执行时存活对象较少的场景,也就是在新生区,所以在新生区使用的是复制算法。

以上就是复制算法详解,更多JVM垃圾回收算法,请查看:4种JVM垃圾回收算法详解

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法