第一种:标记-清除法
直接在内存里标记无用的对象,然后直接回收;
缺点:形成内存碎片
第二种:复制算法:
将内存划分为大小相等的两
块,当一块的内存用完了,就讲还存活的对象复制到另外一块上面,然后将之前的那块清理掉
缺点:浪费内存太多(对老年代的使用,效率低)
第三种:标记-整理算法
将存活的对象都向一端移动,然后直接清理掉端边界以外的内存
第四种:分代收集算法:(当前商业虚拟机都采用这个哦)
根据对象的存活中期的不同将内存划分为几块,一般java堆分为新生代和老年代
新生代:用复制算法
老年代用标记整理算法进行回收