HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器。我们可以根据自己实际的应用需求选择最适合的垃圾收集器。
根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率。
新生代垃圾收集器
1. Serial垃圾收集器
单线程
只开启一条GC线程进行垃圾回收,并且在垃圾回收过程中停止一切用户线程,从而用户的请求或图形化界面会出现卡顿。适合客户端应用
一般客户端应用所需内存较小,不会创建太多的对象,而且堆内存不大,因此垃圾回收时间比较短,即使在这段时间停止一切用户线程,用户也不会感受到明显的停顿,因此本垃圾收集器适合客户端应用。简单高效
由于Serial收集器只有一条GC线程,因此避免了线程切换的开销,从而简单高效。采用“复制”算法
2. ParNew垃圾收集器
ParNew是Serial的多线程版本。
1. 多线程并行执行
ParNew由多条GC线程并行地进行垃圾清理。但清理过程仍然需要停止一切用户线程。但由于有多条GC线程同时清理,清理速度比Serial有一定的提升。
适合多CPU的服务器环境
由于使用了多线程,因此适合CPU较多的服务器环境。