cms回收优化(cms回收器的缺点)
性能优化|史上最通俗易懂的讲解5大垃圾收集器,独家整理哦
Serial收集器有两个用途:一是搭配Parallel Scavenge使用,二是搭配CMS收集器使用,当CMS收集器失败时,会在老年代中使用Serial收集器收集垃圾。ParNew收集器(-XX:+UseParNewGC)ParNew收集器是Serial收集器的多线程版本。
MixedGC触发条件:老年代区域占有比例达到设定值时触发,回收young区域和部分old区域。FULL gc:停止所有线程,使用单线程回收所有垃圾,使用标记清理压缩算法。这五大垃圾收集器各有特点,适用于不同的应用场景,开发者可以根据实际需求选择合适的垃圾收集器进行性能优化。
Serial Old是Serial收集器的老年代版本,同样是一个单线程收集器,使用标记-整理算法。有如下特点:优劣势基本和Serial无异,它是和Serial收集器配合使用的老年代收集器。CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。
CCleaner是首选的电脑垃圾文件清理软件,免费的一款国外的专业系统垃圾清理软件,支持浏览器缓存、系统临时文件、软件缓存等垃圾文件以及注册表的清理,中文增强版还特别增加了国内常见软件的垃圾文件扫描规则,清理效果更好。
【JVM系列】图解CMS垃圾回收器的核心流程
1、CMS垃圾收集器的主要流程包括初始标记、并发标记、最终标记和并发清理,其中初始标记和最终标记需要STW但速度都很快,尽量降低了系统的停顿时间。并发标记和并发清理等耗时较长的阶段采用了并发的方式,来减少系统暂停。然而,由于CMS在并发清理阶段用户线程并没有停止工作,因此可能产生浮动垃圾,并可能降级成为Serial Old垃圾回收器。
2、CMS采用并发“标记-清除”算法,将垃圾收集过程分为初始标记、并发标记、重新标记和并发清理四个阶段。初始标记阶段会暂停所有应用线程,但对象较少,能快速完成。并发标记阶段在用户线程并发执行,标记存活对象,可能产生新对象需要重新标记。重新标记阶段(即卡片标记)确定新增对象的存活状态,需要短暂的停顿。
3、CMS垃圾回收器的核心流程主要包括以下四个阶段:初始标记阶段:核心动作:此阶段会暂停所有应用线程,标记老年代中的GC Roots直接可达对象。特点:由于GC Roots直接可达对象通常较少,因此该阶段能快速完成,对应用程序的影响较小。并发标记阶段:核心动作:从GC Roots出发,标记所有存活的对象。

深入解析CMS垃圾回收器
CMS收集器以获取最短回收停顿时间为目标,采用标记-清除算法,是一种老年代垃圾收集器。运作过程 初始标记:标记所有的根对象及被根对象直接引用的对象,以及年轻代指向老年代的对象。 并发标记:遍历对象图,从GC Roots向下追溯标记可达的对象。此阶段应用线程与垃圾回收线程并发运行。
过程:GC线程会清除不再被引用的对象,并回收他们占用的内存空间。由于前面的标记阶段已经将还在使用的对象标记了出来,因此该过程与用户线程并发执行,不需要全局停顿(“Stop The World”),整个垃圾回收过程完成。
接下来,我们将重点介绍CMS收集器。作为JVM第一款真正意义上的并发收集器,CMS收集器以获得最短回收停顿时间为目标。它采用了“标记-清除”算法,通过初始标记、并发标记、重新标记以及并发清除等步骤进行垃圾收集。
