[总结]-第三章 垃圾收集器与内存分配策略
[总结]-第三章 垃圾收集器与内存分配策略 一、知识点 1、对象是否存活的判定 引用计数法 可达性分析(GC Roots) 判定对象死亡需要经过2次标记: 第一次标记:可达性分析后没有与GC Roots相连接的引用链。 第二次标记:GC对F-Queue中的对象进行标记(低优先级的Finalizer线程会去执行F-Queue中对象的finalize()方法) 2、引用分类 强引用(Strong Reference) 主要强引用还在,则垃圾收集器不会回收被引用的对象。 软引用(Soft Reference) 内存不足即将OOM时,回收。比如:缓存数据。 弱引用(Weak Reference) 只要gc就回收。 虚引用(Phantom Reference) 可以判断被关联的对象是否被GC 3、finalize( ) 任何一个对象的finalize()方法都只会被系统自动调用一次。(注意是对象,并不是类); finalize()如果耗时过长,GC并不会等待。它只是通知另一个线程(Finalizer)去执行而已; 知道即可,不建议使用; 4、垃圾收集算法 引用计数器 优点:实时性,只要对象的引用计数器为0,立刻回收; 缺点:互相引用就永远无法去除。 标记、清除 (一般在老年代适用) 标记:找到所有可访问的对象,做个标记; 清除:遍历堆,把未标记的对象清除; 缺点:1、标记、清除效率都低;2