1 引用计数算法
2 可达性分析算法
1) 生存还是死亡
当发现没有与GC root相链接的引用链,会被第一次标记并根据是否必要执行finalize()方法,,当没必要执行的时候,认为它已经该回收了,当有必要执行的时候,会放到一个F-Queue的 队列之中,当对象为了拯救自己,随便和任何一个对象建立关联就可以了,第二次标记的时候,它将被移除出“即将回收”集合
3 回收方法区
永久代主要回收两部分内容:废弃常量和无用的类
废弃的类:
1) 该类所有实例已经被回收,JAVA堆不存在该类的任何实例
2 ) 加载该类的ClssLoadder已经被回收
3) 该类对应的java.lang.class对象没有在任何地方被引用
4 垃圾收集算法
1 标记-清除算法 (标记后清除不可用对象)
缺点:产生大量内存碎片
2 复制算法:把可用内存按容量划分为大小相等的两块,每次使用其中的一块,
3 标记整理算法:适合于老年代
5 垃圾收集器
Serial收集器(单线程)stop the world
parnew收集器(多线程)
CMS收集器 G1收集器
初始标记(stop the world)
并发标记
重新标记(stop the world)
并发清楚