Java中GC回收算法

①引用计数算法:针对每一个对象,保存一个对该对象引用的计数,该对象引用增加,引用计数相应的增加;引用失效时,引用计数相应的减1,引用计数为0的时候,则不会被引用,即为垃圾,则回收垃圾;优点:效率高,实现简单;缺点:相互引用,导致不能回收

②标记清除算法:需要对程序进行两次扫描,第一次扫描从Root开始,被根引用的对象标记为不是垃圾,不是垃圾对象引用的对象标记为不是垃圾,以此递归。所有不是垃圾的对象的引用都扫描了,然后进行第二次扫描,第一次没有没有得到标记的对象就是垃圾,对此进行回收。

③复制算法:将可用内存化为两块,每次只使用一块;当这一块内存用完了,将还活在对象复制到另外一块新的内存上,然后将已使用的内存块清除

总结:标记算法需要两次扫描,节省内存但是但耗费更多的时间,适合用于垃圾比例少情况。复制算法需要开辟一块用来复制内存,适用于垃圾比例高的情况。

参考 :Java GC 垃圾回收机制与内存分配策略  垃圾回收(GC)的三种基本方式

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容