Java垃圾收集算法
1、标记-清除算法
最基础的收集算法、主要对内存中的不使用的内存标记为可回收状态,进行回收
缺点: 标记、回收效率不高还会导致内存分配不够连续,容易触发新生代垃圾回收
2、复制算法
将可用内存分为两部分,每次只是用一部分,当其中一部分内存使用完之后,就将存活的对象复制到另外一块,然后对已使用的进行清理。
缺点:使用率降低、特别是对象存活率较高时需要频繁的复制操作,如果使用的一块对象都存活着会怎么样?
结论: 适用于新生代,少量内存
3、标记-整理算法
标记-清除算法的升级,让所有存活的对象向内存一端移动,然后清理掉边界以外的内存
结论: 适用于老年代,回收次数较少的场景
4、分代收集
根据对象存活周期将内存划分为几块,新生代划分为两块负责清理大量死去的对象和复制少量存活的对象,老年代对象存活率高,使用标记清理
新生代使用复制算法、老年代使用标记整理算法