前言:
本文章是JVM虚拟机系列第二篇,主要内容是虚拟机的垃圾收集器和内存分配策略。通过第一篇我们已经知道了JVM虚拟机内存管理机制以及对象在虚拟机中是如何进行操作的,那么这一篇来讲一讲虚拟机如何管理内存空间以保证其长时间正常运行。
一、垃圾收集器概述
二、对象是否存活
2.1 引用计数法
2.2 可达性分析算法
2.3 引用
2.4 判断是否存活
2.5 回收方法区
三、垃圾收集算法
(此处只讨论追踪式垃圾收集 Tracing GC)
3.1 分代理论
3.2 标记-清除算法
3.3 标记-复制算法
3.4 标记-整理算法
四、Hotspot实现算法细节
五、经典垃圾收集器
5.1 Serial收集器
5.2 ParNew收集器
5.3 ParallelScavenge收集器
5.4 Serial Old收集器
5.5 Parallel Old收集器
5.6 CMS收集器(Concurrent Mark Sweep)
5.7 Garbage First收集器(G1)
六、低延迟垃圾收集器
七、如何选择垃圾收集器
八、实战之内存分配与回收策略
九、总结
本文章介绍了垃圾收集器算法和多种垃圾收集器的设计工作原理,各种收集器各有千秋,只有根据实际应用的需求和实现方式选择最优的收集器才能获得最好的性能。下面将进入虚拟机子系统,接下来将介绍虚拟机的类加载机制。