`
生亦何欢
  • 浏览: 11483 次
社区版块
存档分类
最新评论

CMS 收集器的过程

    博客分类:
  • JVM
阅读更多
HotSpot JVM 的并发标记清理收集器 (CMS 收集器) 的主要目标就是:低应用停顿时间。该目标对于大多数交互式应用很重要,比如 web 应用。

CMS 收集器的过程

CMS 收集器的 GC 周期由 6 个阶段组成。其中 4 个阶段 (名字以 Concurrent 开始的) 与实际的应用程序是并发执行的,而其他 2 个阶段需要暂停应用程序线程。
1.初始标记:为了收集应用程序的对象引用需要暂停应用程序线程,该阶段完成后,应用程序线程再次启动。
2.并发标记:从第一阶段收集到的对象引用开始,遍历所有其他的对象引用。
3.并发预清理:改变当运行第二阶段时,由应用程序线程产生的对象引用,以更新第二阶段的结果。
4.重标记:由于第三阶段是并发的,对象引用可能会发生进一步改变。因此,应用程序线程会再一次被暂停以更新这些变化,并且在进行实际的清理之前确保一个正确的对象引用视图。这一阶段十分重要,因为必须避免收集到仍被引用的对象。
5.并发清理:所有不再被应用的对象将从堆里清除掉。
6.并发重置:收集器做一些收尾的工作,以便下一次 GC 周期能有一个干净的状态。

一个常见的误解是, CMS 收集器运行是完全与应用程序并发的。我们已经看到,事实并非如此,即使 “stop-the-world” 阶段相对于并发阶段的时间很短。

应该指出,尽管 CMS 收集器为老年代垃圾回收提供了几乎完全并发的解决方案,然而年轻代仍然通过 “stop-the-world” 方法来进行收集。对于交互式应用,停顿也是可接受的,背后的原理是年轻带的垃圾回收时间通常是相当短的。


http://wiki.jikexueyuan.com/project/jvm-parameter/cms.html
分享到:
评论

相关推荐

    java CMS收集器工作过程.jpg

    java CMS收集器工作过程.jpg

    Java理解CMS收集器.pdf

    《Java理解CMS收集器》 CMS(Concurrent Mark Sweep)收集器是Java虚拟机中的一种垃圾收集器,主要针对老年代的内存回收,其特点是并发和低停顿。CMS收集器的主要目标是在尽可能短的时间内完成垃圾收集,减少应用...

    JVM中CMS收集器1

    例如,以下是一段CMS收集器执行过程的日志片段: ``` 2015-05-26T16:23:07.219-0200: [GC (Allocation Failure) 64.322: [ParNew: 613404K->68068K(613440K), 0.1020465 secs] 10885349K->10880154K(12514816K), 0....

    CMS垃圾收集器1

    4. **并发清理(Concurrent Sweeping)**:这个阶段也是并发的,CMS收集器会清理未被标记的对象,释放内存。由于这个阶段用户线程仍在运行,新的垃圾可能会产生,这部分垃圾将在下一次GC时处理。 5. **预清理...

    04-VIP-JVM垃圾收集器详解1

    CMS收集器采用标记-清除算法,整个过程包括初始标记、并发标记、重新标记和并发清除四个阶段。虽然CMS能减少停顿时间,但其清除过程可能导致内存碎片,且在低内存和高并发情况下可能出现"Concurrent Mode Failure...

    jvm性能调优-垃圾收集器parnew&CMS底层三色标记算-performance-gc-parnew-cms.zip

    CMS收集器,全称并发标记扫描,是一种用于老年代的垃圾收集器,特别适合于内存大且需要低暂停时间的应用。CMS分为四个阶段:初始标记、并发标记、最终标记和并发清除。在初始和最终标记阶段,GC会暂停应用,但这两个...

    cms-java-源码

    【CMS(Concurrent Mark Sweep)】是Java垃圾收集器的一种,它是HotSpot虚拟机中用于老年代内存管理的并发标记清除算法。这个源码包"cms-java-源码.zip"显然是针对CMS垃圾收集器的Java实现进行的开源分享,旨在帮助...

    稳了!我准备了1个晚上的CMS垃圾收集器(csdn)————程序.pdf

    CMS(Concurrent Mark Sweep)垃圾收集器是一种Java虚拟机(JVM)中的垃圾回收机制,它的主要目的是为了减少老年代垃圾回收(Full GC)时的停顿时间,从而提高应用程序的响应速度。CMS使用并发标记清除算法,允许在...

    Java垃圾回收(二)老年代垃圾收集器(csdn)————程序.pdf

    如果内存空间足够大,可以通过`-XX:+UseCMSCompactAtFullCollection`开启CMS收集器的压缩操作,来减少碎片,但这个过程也会导致Stop-The-World。 总结来说,选择哪种老年代垃圾收集器取决于应用的特性和需求。对于...

    JVM初探- 内存分配、GC原理与垃圾收集器

    而CMS(Concurrent Mark Sweep)收集器是追求低停顿时间的收集器,适用于需要响应时间敏感的应用。G1(Garbage-First)收集器是针对大内存环境设计的,能够有效地控制停顿时间。 总的来说,JVM中的内存分配与垃圾...

    CMS识别(web指纹识别)扫描器开发.pdf

    在实际扫描过程中,扫描器会根据这些信息尝试访问网站的特定路径或文件,并对返回的结果进行分析。如果成功匹配到特征库中的某个指纹,则可以识别出对应的CMS。 例如,使用MD5识别,就是通过对特定文件进行MD5校验...

    简单分析java中CMS回收器

    Java 中的 CMS 回收器详细分析 ...CMS 回收器是一种高效的垃圾回收器,它可以在应用程序运行过程中进行垃圾回收,减少了垃圾回收的停顿时间。同时,CMS 回收器也可以使用多线程并行回收垃圾,提高了垃圾回收的效率。

    G1垃圾收集器1

    ### CMS收集器与G1收集器的比较 CMS(Concurrent Mark Sweep)收集器是一种并发的垃圾回收器,主要特点是尽可能减少Stop-the-World(STW)事件。然而,CMS在某些阶段仍然需要STW,比如初始标记和最终标记阶段。CMS...

    Java的垃圾收集器(GC)可用.pdf

    Java提供了多种不同的垃圾收集器策略,如串行GC、并行GC、并发标记扫描GC(CMS)和G1 GC等,它们各有优缺点,适用于不同的场景和性能需求。例如,串行GC适合小型应用或单线程环境,而并行GC和并发GC则更适合多处理器...

    性能工程师指南:玩转OpenJDK HotSpot垃圾收集器

    ### 性能工程师指南:玩转OpenJDK HotSpot垃圾收集器 #### 一、性能工程概述 在软件开发过程中,性能工程是一个重要的环节,它不仅涵盖了对软件性能的需求定义与测试计划制定,还包括了软件的开发、实施及后续的...

    cms界面设计重要网址

    标题“cms界面设计重要网址”指的是在内容管理系统(CMS)开发过程中,对于用户界面(UI)和用户体验(UX)设计的一些关键资源网站。这些网址通常包含设计模板、图标集、色彩搭配、布局灵感以及交互设计指导等内容,...

    了解CMS(ConcurrentMarkSweep)垃圾回

    【CMS(Concurrent Mark Sweep)垃圾回收器】是Java虚拟机(JVM)中的一种垃圾收集器,专门针对老年代的内存管理。CMS回收器的主要目标是减少垃圾收集时的应用程序暂停时间,以提高用户体验。它引入了并发模式,允许...

    Java的垃圾收集器(GC)整理.pdf

    Java的垃圾收集器(Garbage Collector,简称GC)是Java平台的一个重要特性,它负责自动管理程序中的内存,避免手动内存管理可能导致的内存泄漏问题。Java的垃圾收集机制是基于引用计数和可达性分析算法的,其目标是...

Global site tag (gtag.js) - Google Analytics