并发标记扫描(CMS)收集器(待完成)

并发标记扫描(CMS)收集器专为需要较短垃圾收集暂停时间且能够在应用程序运行时与垃圾收集器共享处理器资源的应用程序而设计。

对于任何暂停时间要求较低的应用程序,应考虑使用此收集器。

使用命令行选项启用CMS收集器-XX:+UseConcMarkSweepGC。

与其他可用的收集器类似,CMS收集器是分代的;;因此,小型和主要收集都会发生

CMS收集器尝试通过使用单独的垃圾收集器线程在执行应用程序线程的同时,跟踪可访问的对象来减少由于主要收集而导致的暂停时间。

在每个主要的收集周期中,CMS收集器会在收集开始时暂停所有应用程序线程一段时间,然后再一次暂停到收集的中间。

并发模式失败

CMS收集器使用一个或多个与应用程序线程同时运行的垃圾收集器线程,目标是在完成之前完成终生代的收集。

在正常操作中,CMS收集器在应用程序线程仍在运行时执行大部分跟踪和扫描工作,因此应用程序线程只能看到短暂的暂停。

暂停

CMS收集器在并发收集周期中暂停两次应用程序。第一个暂停是将根目录中可直接访问的对象(例如,来自应用程序线程堆栈和寄存器的对象引用,静态对象等)以及堆中的其他位置(例如,年轻代)标记为暂停。第一次暂停被称为初始标记暂停。第二次暂停在并发跟踪阶段结束时发现,并且在CMS收集器完成对该对象的跟踪之后,由于对象中引用的应用程序线程的更新而发现并发跟踪遗漏的对象。第二次暂停被称为备注暂停。

原文地址:https://www.cnblogs.com/use-D/p/9570275.html

时间: 2024-10-22 09:01:08

并发标记扫描(CMS)收集器(待完成)的相关文章

JAVA垃圾收集器之CMS收集器

1.特点 CMS收集器是JAVA虚拟机中垃圾收集器的一种.它运行在JAVA虚拟机的老年代中.CMS是(Concurrent MarkSweep)的首字母缩写.CMS收集器是一种以获取最短回收停顿时间为目标的收集器.比较适用于互联网等场合,可能是互联网中最重要的收集器模式: 2.优点 由于整个过程中耗时最长的并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的.因此CMS是一款优秀的收集器,具备了并发收集.低停顿的优点

CMS收集器和G1收集器

CMS收集器 CMS收集器是一种以获取最短回收停顿时间为目标的收集器.基于"标记-清除"算法实现,它的运作过程如下: 初始标记 并发标记 重新标记 并发清除 初始标记.从新标记这两个步骤仍然需要"stop the world",初始标记仅仅只是标记一下GC Roots能直接关联到的对象,熟读很快,并发标记阶段就是进行GC Roots Tracing,而重新标记阶段则是为了修正并发标记期间因用户程序继续运作而导致标记产生表动的那一部分对象的标记记录,这个阶段的停顿时间

JVM快速调优手册之五: ParNew收集器+CMS收集器的产品案例分析(响应时间优先)

服务器 双核,4个cores; 16G memory [[email protected] ~]# cat /proc/cpuinfo | grep "cpu cores" cpu cores : 2 cpu cores : 2 公式简述 响应时间优先的并发收集器,主要是保证系统的响应时间,减少垃圾收集时的停顿时间.适用于应用服务器.电信领域等. ParNew收集器 ParNew收集器是Serial收集器的多线程版本,许多运行在Server模式下的虚拟机中首选的新生代收集器,除Seri

CMS收集器

CMS收集周期 CMS并非没有暂停,而是用两次短暂停来替代串行标记整理算法的长暂停,它的收集周期是这样:初始标记(CMS-initial-mark) -> 并发标记(CMS-concurrent-mark) -> 重新标记(CMS-remark) -> 并发清除(CMS-concurrent-sweep) ->并发重设状态等待下次CMS的触发(CMS-concurrent-reset).其中的1,3两个步骤需要暂停所有的应用程序线程的.第一次暂停从root对象开始标记存活的对象,这

JVM之CMS收集器

CMS(Concurrent Mark Sweep) 最短回收停顿,适合维持响应时间上的要求. 初始标记 Initial mark:标记GC Roots能够关联到的对象.stop-mark. 并发标记 Concurrent mark:GC Roots tracing,并行业务线程. 重新标记 remark:重新标记并发标记过程中因为用户程序同时运行而导致标记产生变动的对象的标记记录.stop-mark. 并发清除 Concurrent sweep:清除无用对象. 初始标记和重新标记占用时间比较短

JAVA G1收集器 第11节

JAVA G1收集器 第11节 上两章我们讲了新生代和年老代的收集器,那么这一章的话我们就要讲一个收集范围涵盖整个堆的收集器——G1收集器. 先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利用多个CPU进行工作,收集方式也与CMS收集器类似,因此不会有太久的停顿. 虽然回收的范围是整个堆,但还是有分代回收的回收方式.在年轻代依然采用复制算法:年老代也同样采用“标记-清除-整理”算法.但是,新生代与老年代在堆内存中的布局就和以往的收集器有着很大的区别:G1将整个堆分成了一个个大小相等的独

Tenured 区并发垃圾回收器CMS介绍

转自:http://javis163.iteye.com/blog/1679059 当使用CMS收集器时,当开始进行收集时,old代的收集过程如下所示:1,首先jvm根据-XX:CMSInitiatingOccupancyFraction,-XX:+UseCMSInitiatingOccupancyOnly来决定什么时间开始垃圾收集:2,如果设置了-XX:+UseCMSInitiatingOccupancyOnly,那么只有当old代占用确实达到了-XX:CMSInitiatingOccupan

G1垃圾收集器和CMS垃圾收集器 (http://mm.fancymore.com/reading/G1-CMS%E5%9E%83%E5%9C%BE%E7%AE%97%E6%B3%95.html#toc_8)

参考来源 JVM 体系架构 堆/栈的内存分配 静态和非静态方法的内存分配 CMS 回收算法 应用场景 CMS 垃圾收集阶段划分(Collection Phases) CMS什么时候启动 CMS缺点 G1收集算法 G1的发展 分代垃圾回收瓶颈 G1使用场景 G1特点 G1堆内存的分配 G1的进程内存占用(Footprint) G1 收集器收集过程 G1命令行参数 记录G1的GC日志 G1性能调优 参考来源 http://blog.csdn.net/renfufei/article/details/

[转]并发垃圾回收器CMS介绍

当使用CMS收集器时,当开始进行收集时,old代的收集过程如下所示: 1,首先jvm根据-XX:CMSInitiatingOccupancyFraction,-XX:+UseCMSInitiatingOccupancyOnly来决定什么时间开始垃圾收集:2,如果设置了-XX:+UseCMSInitiatingOccupancyOnly,那么只有当old代占用确实达到了-XX:CMSInitiatingOccupancyFraction参数所设定的比例时才会触发cms gc:3,如果没有设置-XX