复制算法是新生代的JVM垃圾回收算法,而且Java面试经常被问,下面我重点详解复制算法@mikechen
复制算法定义
复制算法,英文全称Copying Algorithm,是一种常见的JVM垃圾回收算法。
复制算法优缺点
复制算法优点:
复制算法的优点是实现简单,只需要将存活对象复制到新的内存区域中即可,非常高效。
复制算法缺点:
需要更多的内存空间,因为JVM复制算法需要将存活对象复制到新的内存区域中,所以需要两倍的内存空间,这可能会导致内存空间的浪费。
复制算法思想
复制算法,如下图所示:
复制算法步骤,主要分为如下步骤:
第一步:标记出所有的存活对象
从根集合节点进行扫描,例如:线程栈中的对象、静态变量、寄存器中的指针等,标记出所有的存活对象,
第二步:复制对象到新内存
找出所有仍然存活的对象,并将这些存活的对象复制到一块儿新的内存,比如:上方图片下边的那一块儿绿色内存。
第三步:回收垃圾并被清除
当所有存活的对象都被复制到To区后,From区中的所有对象都可以被清除(图中上边的那一块儿内存)。
复制算法适合
复制算法适合垃圾回收执行时存活对象较少的场景,也就是在新生区,所以在新生区使用的是复制算法。
以上就是复制算法详解,更多JVM垃圾回收算法,请查看:4种JVM垃圾回收算法详解
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》