原理
为了解决标记清除算法的效率问题,一种称为“复制”(Copying)的收集算法出现了,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对其中的一块进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。
缺点
同时只有一半的内存被使用(根据实际情况可以采用非1:1的比例划分,如HotSpot的新生代8:1:1)
复制算法执行过程如下图:
--------------------------------------------分割线---------------------------------------------------------
以上知识均来源于该书籍,有钱的小伙伴可以去购买正版书籍支持一下。
提取码:123456
《深入理解Java虚拟机JVM高级特性与最佳实践(周志明)》
https://306t.com/file/28095605-451122608