打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

内容:

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时,任务同时运行。由此提高了效率,增加了用户体验。
  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
java垃圾回收总结(2)
Java GC系列(3):垃圾回收器种类
JDK5.0垃圾收集优化之--Don‘t Pause
【读者投稿】浅谈垃圾回收
如何调优JVM
JVM有几种垃圾回收(GC)算法,你知道吗?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服