判断对象存活
引用计数算法(弃用,难以解决循环引用)
可达性分析算法(GC Roots对象向下搜索)
(如果对象没有与GC Roots相连的引用链,它会被标记,然后执行finalize()筛选,当对象没有覆盖finalize()方法,
finalize()方法被虚拟机调用过,该对象被回收。finalize()方法里只要使得该对象与引用链上对象关联。
引用垃圾回收级别(内存紧张时,存活的对象也回收)
强引用(不会被回收)
软引用
弱引用
虚引用
回收方法区
废弃常量
无用的类(三个条件:java堆不存在该类实例,加载该类的类加载器被回收,该类Class反射对象没有被引用)
GC算法
标记-清除算法(效率低,产生不连续的碎片)
复制算法(内存缩小为原来一半,对象存活率高时复制操作就多,效率变低。改进:将内存分为Eden, from Survivor, to Survivor)
标记-整理算法