JVM垃圾回收算法
一、标记-清除算法
标记清除算法,首先标记可回收的对象,然后对标记的对象进行清除。
缺点:会产生大量的空间碎片,不利于内存的更好利用
二、复制算法
将内存空间一分为二,每次使用其中的一半,每次进行垃圾回收的时候,将存活的对象复制到另一边的内存区域,然后清除掉原先内存中的未存活对象
缺点:每次都将内存一分为二,可用空间少
优点:不会产生空间碎片
三、标记-整理算法
与标记清除算法类似,不过该算法是标记存活的对象,后续不是直接清除,而是将标记的存活对象移动到一端,然后清除掉端边界以外的可回收对象
优点:不会产生空间碎片,且内存不会一分为二
缺点:移动对象的时候难免会消耗一定的时间和空间
四、分代收集算法
根据不同代进行算法选择
- 老年代,存活对象多,采用标记整理算法或标记清除算法
- 新生代,存活对象少,采用复制算法