垃圾回收算法

基础知识:

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、分代算法:新生代和老年代使用不同算法回收

你可能感兴趣的:(垃圾回收算法)