①引用计数算法:针对每一个对象,保存一个对该对象引用的计数,该对象引用增加,引用计数相应的增加;引用失效时,引用计数相应的减1,引用计数为0的时候,则不会被引用,即为垃圾,则回收垃圾;优点:效率高,实现简单;缺点:相互引用,导致不能回收
②标记清除算法:需要对程序进行两次扫描,第一次扫描从Root开始,被根引用的对象标记为不是垃圾,不是垃圾对象引用的对象标记为不是垃圾,以此递归。所有不是垃圾的对象的引用都扫描了,然后进行第二次扫描,第一次没有没有得到标记的对象就是垃圾,对此进行回收。
③复制算法:将可用内存化为两块,每次只使用一块;当这一块内存用完了,将还活在对象复制到另外一块新的内存上,然后将已使用的内存块清除
总结:标记算法需要两次扫描,节省内存但是但耗费更多的时间,适合用于垃圾比例少情况。复制算法需要开辟一块用来复制内存,适用于垃圾比例高的情况。