垃圾收集
判断对象是否存活:引用计数算法、可达性分析算法(finalize)
引用:强引用、软引用(第二次回收)、弱引用(下次垃圾收集之前)、虚引用
垃圾收集算法:标记-清除算法(效率不高、内存碎片)、复制算法(eden、survivor;担保机制)、标记-整理算法、分代收集算法
垃圾收集器
serial收集器:单线程收集器、垃圾收集时暂停其他所有工作线程;client模式下默认的新生代收集器;
parnew收集器:serial收集器的多线程版本;
Parallel Scavenge收集器:标准是达到一个可控制的吞吐量(运行用户代码时间/(运行用户代码时间+垃圾收集时间));停顿时间下降吞吐量也下降;
Serial Old收集器:单线程收集器;client模式下虚拟机使用;在service模式 下(1、与Parallel Scavenge收集器搭配使用2、作为cms收集器的后备方案);
Patallel Old收集器:Parallel Scavenge收集器的老年版本,使用多线程和“标记-整理”算法
CMS收集器:获取最短回收停顿时间为目标的收集器。“标记-清除”算法;(初始标记》并发标记》重新标记》并发清除)
G1收集器:
内存分配
1、对象优先在Eden分配
2、大对象直接进入老年代
3、长期存活的对象进入老年代
4、动态对象年龄判断
5、空间分配担保