三. 垃圾收集器

一,概述

垃圾收集器就是内存回收的具体实现。虚拟机包含的所有收集器如图:

展示了七种作用于不同分代的收集器,如果两个收集器之间存在 连线,说明可以搭配使用。所处的区域,表示属于新生代还是老年代收集器。

没有最好的收集器,更加没有万能的收集器,要能根据具体应用选取最合适的收集器。

二,Serial 收集器

最基本,发展历史最悠久的收集器。是一个单线程的收集器,单线程并不意味着它只会使用一个cpu或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,会经常 Stop TheWorld

基本上已经被淘汰的收集器,但依然是虚拟机运行在Client模式下的默认新生代收集器,简单而高效(与其他收集器的单线程比)

Stop TheWorld:JVM在后台自动发起和自动完成的,在用户不可见的情况下,把用户正常的工作线程全部停掉,即GC停顿;
会带给用户不良的体验;

从JDK1.3到现在,从Serial收集器-》Parallel收集器-》CMS-》G1,用户线程停顿时间不断缩短,但仍然无法完全消除;

三,ParNew收集器

是Serial收集器的多线程版本。

四,Parallel Scavenge收集器

五,Serial Old收集器

六,Parallel Old收集器

七,CMS收集器

八,Gl收集器