一、对象是否存活的判断
1: 引用计数器 (缺点 循环引用)
2: 可达性分析
二、垃圾收集算法
1、标记清除 ,会产生碎片
2、复制算法 ,划分为大小相等的两块,只能使用一半的内存空间
3、标记整理,通过将存活对象都向一段移动,然后将边界的内存清理
4、分代算法: 新生代使用使用复制算法,老年代使用标记清除和标记整理
hotspot实现算法: 枚举根节点、安全点、安全区域 。(只有在安全点和安全区域清理)
三、7种垃圾收集算法
新生代 : serial 单线程 、parnew (多线程的serial)、parallel(多线程 并行)
老年代:serial old 、parallel old 、CMS (并发 用户线程和gc线程同时进行)、G1收集器
四、内存分配和回收策略
1: 对象优先在eden 分配
2: 大对象直接进入老年待
3: 长期存活的对象进入老年代
4: 如果survior 空间中相同年龄对象大小的总和大于survior一半时,这些对象进入老年代
5: 保证老年代空间可以容纳新生代,不能容纳时,就需要full gc