第18课:JVM垃圾回收器串行、并行、并发垃圾回收器概述

本文深入探讨了JVM中的垃圾回收器分类,包括新生代、老年代及跨代收集器,如Serial、ParNew、ParallelScavenge、CMS、SerialOld、ParallelOld和G1。同时,解析了Stoptheworld机制的影响及其在不同回收器中的应用,对比了串行、并行与并发回收器的工作原理与优劣。

内容:

1.JVM中不同的垃圾回收器
2.穿行、并行、并发垃圾回收器概述

一、JVM中不同的垃圾回收器

    1.按照分代收集的方式,把垃圾回收器做如下的划分:
        a)新生代收集器:Serial 、ParNew、Parallel Scavenge
        b)老年代收集器:CMS、Serial Old、Paralled Old
        c)新生代和老年代都可以使用的:G1
        详细内容:JVM垃圾回收器介绍
    2.Stop the world:所谓的Stop the World机制,简称STW,即在执行垃圾收集算法时,Java应用程序的其他所有除了垃圾收集收集器线程之外的线程都被挂起。此时,系统只能允许GC线程进行运行,其他线程则会全部暂停,等待GC线程执行完毕后才能再次运行。这些工作都是由虚拟机在后台自动发起和自动完成的,是在用户不可见的情况下把用户正常工作的线程全部停下来,这对于很多的应用程序,尤其是那些对于实时性要求很高的程序来说是难以接受的。但是有些时候对于虚拟机来说采用Stop the world机制是无法避免的,例如采用复制算法时,为了保证在复制存活的对象的时候,对象的一致性,不然要使应用程序被挂起。但是随着Java虚拟机的发展,HotSpot虚拟机团队为达到更好用户体验而一直进行着努力,不断的对垃圾收集器进行着改进,随着JDK的版本的不断更新,更好的垃圾收集器的出现,用户线程的停顿时间也在不断缩短,虽然这一时间现阶段仍然不能消除,但相信不久的未来一定会有更好的垃圾收集器被发现,从而完全达到用户对于虚拟机垃圾回收的性能要求。   
    3.对于很多的垃圾收集器来说,都会采用Stop the World机制来进行垃圾回收。具体来讲,在Java虚拟机的Serial, ParNew, Parallel Scanvange, ParallelOld, Serial Old全程都会Stop the world,JVM这时候只运行GC线程,不运行用户线程。而CMS主要分为 initial Mark, Concurrent Mark, ReMark,Concurrent Sweep等阶段,initial Mark和Remark占整体的时间比较较小,它们会Stop the world。 Concurrent Mark和Concurrent Sweep会和用户线程一起运行。虽然CMS减少了stop the world的次数,不可避免地让整体GC的时间拉长了。


二、串行,并行,并发垃圾回收器概述

    1.串行:jvm GC时存在一个线程
    2.并行:jvm gc时有多个线程,用多个cpu或者core同时执行垃圾回收,优点是提高了吞吐量。但是由于线程切换占用了时间,所有并行并不一定比串行好。两者都基于stop the world。
    3.并发:不用停止任务,可以在gc时,任务同时运行。由此提高了效率,增加了用户体验。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值