jvm(垃圾回收器)

1、Serial收集器(串行)

     一个单线程的垃圾回收器,使用复制算法,在jdk1.3.1之前也是新生代唯一可以使用的垃圾回收器。单线程不仅仅只说明它只用一个cpu或一个收集线程去完成收集工作,关键是在其进行垃圾回收的时候,

    会停止到所有其他的工作线程,直到它的收集工作完成。

    缺点:每次收集的时候,都会运用的停顿,给用户的体验不好

    优点:简单高效,没有线程的而外开销,专心的干垃圾回收工作,在一个一般在系统里边,分配给虚拟机的内存管理不会很大,如果只是收集几十兆到一两百兆的新生代,jvm停顿的时间可以控制在

    几十毫秒到几百毫秒,对于用户而言,这样的卡顿基本也是完全可以接受的,所以Serial收集器仍然是clients模式下jvm默认的新生代垃圾回收器。

2、ParNew收集器(Serial多线程版)

     ParNew是Serial的多线程版本,除了多线程,其他的基本和Serial收集器一样。ParNew收集器是除了Serial收集器外唯一一个能和GMS收集器配合工作。GMS是一个并行的垃圾回收器,在不停止用

     户线程的情况下完成垃圾回收工作。

3、Parallel Scavenge收集器(并行清除)

     Parallel Scavenge收集器也是新生代的垃圾回收器,多线程的,和ParNew类似,但是它关注的点是达到一个可控制的吞吐量(运行代码时间/(运行代码时间+回收垃圾时间))。

扫描二维码关注公众号,回复: 5586708 查看本文章

     用户交互多的话,可以适当的调整MaxGCPauseMills的大小,调高吞吐量,停顿的时间降低,但是停顿的时间缩短是牺牲新生代空间来进行的,所以有可能GC的更加频繁,所以不宜调整的过小。

     对于计算型的应用,用户交互的比较少,可以长时间运算之后在进行一次比较长时间的垃圾回收。

4、Serial Old收集器

     Serial Old收集器是Serial的老年代版本,采用了标记整理的算法。

5、Parallel Old收集器

    Parallel Old是 Parallel Scavenge的老年代版本,也是采用了标记整理的算法

6、CMS收集器

     

7、G1收集器

     

猜你喜欢

转载自www.cnblogs.com/muyarn/p/10558144.html