垃圾回收算法

基础知识:

1.finalize()的方法会在对象被gc时调用
2.System.gc()手动触发回收,对象不一定被回收
3.不可达的对象只得是不被使用的对象

算法:

1、引用计数法(新生代使用):对象有15次机会,不适用-1,使用+1,为0则清除
2、复制算法(新生代使用):新生代划分为Eden、S0、S1三个区,刚产生的对象放在Eden区,gc发现仍在使用放入S0或S1区(s0、s1同一时刻只有一个会使用),发现s区存在需要清除对象,则复制存活对象到两一个s区,清除本s区
优点:整体清除s区,可防止内存回收的碎片化
3、标记清除算法(老年代使用,已不用):对象不使用标记为0,使用标记为1,会回收标记为0的对象
缺点:存在碎片化
4、标记压缩算法(老年代使用,标记清除算法升级版0):将不使用对象放置到一起,一起清除,防止碎片化
5、分代算法:新生代和老年代使用不同算法回收

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容