网站大量收购闲置独家精品文档,联系QQ:2885784924

cms gc原理_原创精品文档.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE

1-

cmsgc原理

第一章CMS垃圾回收器概述

CMS(ConcurrentMarkSweep)垃圾回收器是一种并发的、标记-清除式的垃圾回收器,广泛应用于Java虚拟机中。CMS旨在减少系统停顿时间,使得在内存回收过程中应用程序能够保持尽可能高的响应速度。CMS垃圾回收器的主要特点在于其工作流程的设计,它将垃圾回收分为几个阶段,包括初始标记(InitialMark)、重新标记(Remark)、清除(Sweep)和清理(Cleanup)等。

(1)初始标记阶段是CMS垃圾回收器工作的起点,其主要任务是标记出所有的活动对象,这一阶段是停止-开始(Stop-The-World)的,意味着应用程序在此阶段将暂停执行。在这个阶段,垃圾回收线程会快速地扫描堆栈和本地变量表中的对象,以确定哪些对象是活动的。

(2)重新标记阶段是初始标记的补充,它主要是为了处理在初始标记阶段未能处理的活动对象,这些对象可能是在程序运行过程中新创建的或者是在程序运行中发生变化的对象。同样,这个阶段也是停止-开始(Stop-The-World)的。在重新标记阶段,CMS垃圾回收器会对之前标记为活动的对象进行确认。

(3)清除阶段是CMS垃圾回收器中最重要的阶段,它负责回收那些已经标记为垃圾的对象。在这个阶段,CMS会遍历堆中的所有对象,清除那些没有被标记为活动的对象所占用的内存。清除过程完成后,剩余的对象将重新整理,以避免内存碎片问题。

CMS垃圾回收器的这些阶段协同工作,以实现高效的内存回收。然而,由于CMS垃圾回收器主要关注减少停顿时间,它可能不适合所有的应用场景。例如,对于那些对停顿时间要求极高,且新生代对象数量较多的应用,可能需要考虑使用其他类型的垃圾回收器。

第二章CMS垃圾回收器的运作机制

CMS垃圾回收器的运作机制是通过对Java堆内存的并发标记和清除过程来管理内存回收的,其核心在于将垃圾回收过程中的停顿时间降至最低。以下是CMS垃圾回收器运作机制的详细描述。

(1)在CMS垃圾回收器的启动阶段,首先进行的是初始标记(InitialMark),这个阶段是Stop-The-World的,意味着在这个阶段所有应用程序线程都会被暂停。初始标记的主要目的是标记出GCRoots能直接关联到的对象,这些对象不会被回收。GCRoots通常包括栈帧中的变量、方法区中的静态属性、常量以及本地方法栈中的JNI引用等。

(2)随后是并发标记阶段(ConcurrentMark),这一阶段与用户线程并发执行,目的是完成剩余的对象标记。在并发标记阶段,CMS会遍历堆中的所有对象,并标记出可达的对象。这个过程中,由于是并发进行的,所以应用程序的运行不会受到影响。然而,由于并发标记过程中可能会有新的对象产生,所以需要重新标记(Remark)阶段来处理这些新产生的对象。重新标记阶段同样是Stop-The-World的,它会修正并发标记阶段可能遗漏的对象。

(3)最后是并发清除阶段(ConcurrentSweep),这个阶段同样与用户线程并发执行,目的是清除那些标记为垃圾的对象所占用的内存。在清除阶段,CMS会遍历堆中的所有对象,回收那些没有被标记为活动的对象所占用的内存。清除完成后,会进行一次简单的内存压缩,以减少内存碎片,提高内存利用率。在整个CMS垃圾回收过程中,由于标记和清除操作是并发进行的,因此可以大幅度减少应用程序的停顿时间。

CMS垃圾回收器通过以上三个阶段实现了高效且低停顿时间的垃圾回收。然而,CMS也有其局限性,比如在并发标记阶段可能会遇到内存碎片问题,尤其是在对象分配频繁的场景下。此外,CMS在处理大量存活对象时,其效率可能会下降。因此,在实际应用中,需要根据具体的应用场景和内存使用特点来选择合适的垃圾回收器。

第三章CMS垃圾回收器的不同模式

(1)CMS垃圾回收器提供了多种运行模式,以适应不同的应用场景和性能需求。其中,最常用的模式是默认模式,它适用于大多数应用场景。在默认模式下,CMS会在垃圾回收期间暂停应用程序的执行,以完成标记和清除操作。这种模式在处理小到中等大小的堆时表现良好,但可能会对性能有一定影响。

(2)另一个重要的模式是响应模式(CMS-Parallel),它适用于对系统响应时间要求较高的场景。在响应模式下,CMS垃圾回收器会尽量减少暂停时间,通过并行处理垃圾回收任务来减少应用程序的停顿时间。据测试,响应模式可以将暂停时间缩短到100毫秒以下,适用于对实时性要求较高的系统,如电子商务网站。

(3)最后,CMS还提供了低延迟模式(CMS-LowLatency),它特别适用于需要长时间运行且对暂停时间要求极高的场景,如数据库服务器。在低延迟模式下,CMS会尽量减少垃圾回收过程中的暂停时间,通过调整垃圾回收器的参数

文档评论(0)

131****8323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档