CMS与FullGC

JVM中的CMS(Concurrent Mark Sweep)GC和Full GC(Full Garbage Collection)是两种不同的垃圾回收算法。

  1. CMS GC:CMS GC是一种并发的垃圾回收算法,它在运行期间与应用程序线程并发工作,尽可能减少垃圾回收对应用程序的影响。CMS GC主要分为四个阶段:初始标记、并发标记、重新标记和并发清除。它通过标记和清除两个过程来回收垃圾对象,其中标记阶段和应用程序线程并发执行,以减少停顿时间。

  2. Full GC:Full GC是一种非并发的垃圾回收算法,它会停止应用程序的所有线程,对整个堆空间进行垃圾回收。Full GC的目的是回收整个堆空间中所有的垃圾对象,包括年轻代和老年代。Full GC通常在以下情况下发生:当堆空间不足以分配新的对象时,当年轻代无法容纳存活的对象时,或者当老年代的对象达到一定的阈值时。

因此,CMS GC和Full GC的区别主要在于执行方式和影响范围。

  • 执行方式:CMS GC是并发执行的,在垃圾回收的过程中,应用程序线程可以继续运行,减少停顿时间。而Full GC是非并发执行的,会停止应用程序的所有线程进行垃圾回收,会造成较长的停顿时间。

  • 影响范围:CMS GC只对老年代进行垃圾回收,不会对年轻代进行回收。而Full GC会同时回收年轻代和老年代的垃圾对象。

总的来说,CMS GC适用于对停顿时间有严格要求的应用程序,它能够减少垃圾回收对应用程序的影响;而Full GC适用于对吞吐量要求较高的应用程序,它能够彻底回收堆空间中的所有垃圾对象。

在JVM中,CMS GC和Full GC的发生顺序可以是不确定的,取决于垃圾回收器的配置和堆内存的使用情况。一般情况下,CMS GC会先于Full GC发生。

CMS GC是一种增量垃圾回收算法,它在运行期间与应用程序线程并发工作。当老年代空间不足时,CMS GC会触发,并尝试回收老年代中的垃圾对象。如果CMS GC无法回收足够的空间,或者因为应用程序的负载过重导致垃圾回收无法跟上对象分配的速度,那么就会触发Full GC。

Full GC是一种停顿式垃圾回收算法,它会停止应用程序的所有线程进行垃圾回收。Full GC通常在以下情况下发生:当堆空间不足以分配新的对象时,当年轻代无法容纳存活的对象时,或者当老年代的对象达到一定的阈值时。当发生Full GC时,JVM会对整个堆空间进行垃圾回收,包括年轻代和老年代。

需要注意的是,Full GC的发生通常会导致较长的停顿时间,因为它会停止应用程序的所有线程进行垃圾回收。而CMS GC的发生是与应用程序线程并发执行的,可以减少停顿时间。因此,尽量减少Full GC的发生是优化垃圾回收性能的一个重要方向。

在JVM中,Full GC(Full Garbage Collection)并不是单线程的,它通常会使用多线程来进行垃圾回收操作。

Full GC的垃圾回收过程通常包括多个阶段,例如标记、清除、压缩等。在这些阶段中,JVM会利用多个线程来并行处理不同的任务,以加快垃圾回收的速度。

具体地说,Full GC通常会使用多个线程来完成以下任务:

  1. 标记阶段:使用多个线程对堆内存中的对象进行标记,标记出存活的对象。

  2. 清除阶段:使用多个线程对堆内存中的垃圾对象进行清除,释放内存空间。

  3. 压缩阶段:使用多个线程对堆内存中的对象进行压缩,以减少空间碎片化。

通过利用多线程,Full GC能够并行处理不同的垃圾回收任务,从而提高垃圾回收的效率和速度。这也是为什么Full GC的停顿时间相对较长的原因,因为它需要停止应用程序的所有线程,同时利用多线程进行垃圾回收操作。

使用ParNew作为Young区收集器,CMS作为Old区收集器,并将Serial Old作为CMS出错的后备收集器是一种常见的收集器组合。

ParNew收集器是一个多线程的新生代收集器,与Serial收集器类似,但可以充分利用多核CPU的优势,提供更高的吞吐量。

CMS(Concurrent Mark Sweep)收集器是一种以最短回收停顿时间为目标的收集器,通过并发标记和清除的方式来减少停顿时间。

Serial Old收集器是一个单线程的老年代收集器,使用标记-整理算法,适用于小型应用或者只能使用单线程收集器的场景。

当CMS收集器出现问题或无法完成垃圾回收时,会触发一次Full GC操作,此时会使用Serial Old作为后备收集器。Serial Old是一个单线程的收集器,可以保证在Serial Old收集器的单线程环境下进行垃圾回收。

这种组合可以在一定程度上平衡吞吐量和回收停顿时间的需求。

JVM所采用的Old区垃圾收集器为CMS,CMS会在以下几种情况下发生Full GC:

  • 大对象分配到老年代时,可用空间不足
  • perm或metaspace空间不足 (JDK 8 开始HotSpot取消了perm,将类信息存放在metaspace中)
  • 晋升失败:年轻代的存活对象,需要迁移到老年代时,老年代剩余对象不足
  • promotion failed:担保失败,,gc日志会记录信息(如:[ParNew (promotion failed): 1669947K->145784K(1887488K));
  • concurrent mode failure:执行CMS GC的过程中同时业务线程将对象放入老年代,而此时老年代空间不足,或者在做Minor GC的时候,新生代Survivor空间放不下,需要放入老年代,而老年代也放不下而产生的,gc日志会记录信息(如:(concurrent mode failure): 2902473K->1221894K(3354624K), 0.3778980 secs] )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mac 解决eclipse意外退出】

打开eclipse时提示报错信息应用程序"Eclipse.app"无法打开(这里忘了截图就不上图了)。 点击 “好” 的按钮后会弹出发送报告的弹窗 终端输入:sudo codesign --force --deep --sign - /Applications/Eclipse.app/ 就可以解决了

互联网上门洗衣洗鞋小程序搭建

“闪站侠互联网洗护软件开发”围绕健康洗护、智能操作做出不断升级, 满足用户多样化的洗护需求,打造轻松洗衣洗鞋体验。 洗衣洗鞋专用软件,可以帮助洗衣店洗鞋店店主们省心高效的管理店铺,一次付款长期使用.功能基本涵…

趣学python编程 (四、数据结构和算法介绍)

数据结构和算法在编程中非常重要。数据结构是组织和存储数据的方式,而算法是解决问题的方法和步骤。你要挑战的蓝桥杯,实际也是在设计算法解决问题。其实各种编程语言都只是工具,而程序的核心数据结构算法。犹如练武,数据结构和算…

深度学习乳腺癌分类 计算机竞赛

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

【iOS】——知乎日报第五周总结

文章目录 一、评论区展开与收缩二、FMDB库实现本地持久化FMDB常用类:FMDB的简单使用: 三、点赞和收藏的持久化 一、评论区展开与收缩 有的评论没有被回复评论或者被回复评论过短,这时就不需要展开全文的按钮,所以首先计算被回复评…

1.1二分查找

二分查找,主要是针对基本有序的数据来进行查找target。 二分法的思想很简单,因为整个数组是有序的,数组默认是递增的。 1.1 使用条件 用于查找的内容逻辑上来说是需要有序的查找的数量只能是一个,而不是多个 1.2 简介 首先选…

Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源

云产品按月订购,无需购买硬件资源 PT Cloud Application Firewall 是 Positive Technologies 推出的首个用于保护网络应用程序的商用云产品。Web 应用层防火墙 (web application firewall, WAF) 现在可以通过 技术合作伙伴——授权服务商和云提供商以订购方式提供1…

C#编程题分享(1)

求四个整数中的最大值和最小值问题 编写⼀个程序,对输⼊的4个整数,求出其中的最⼤值和最⼩值,并显⽰出来。 Console.WriteLine("请分别输入四个整数:"); int a Convert.ToInt32(Console.ReadLine()); int b Convert…

Modbus转Profinet网关在污水处理系统中连接PLC和变频器Modbus通信案例

污水处理系统中使用Modbus转Profinet网关可以连接PLC和变频器,实现二者之间的通信。该网关的作用是将PLC与变频器之间的Modbus协议转换为Profinet协议,使两者可以相互沟通。在污水处理系统中,PLC控制污水处理的各个过程,而变频器则…

测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发

正交实验设计方法 一.方法简介 利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效…

vue过渡,vue3组合式API详细介绍

7.过渡效果 vue提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画 Transition会在一个元素或组件进入和离开DOM时应用动画TransitionGroup会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画 7-1过渡效果 过渡模式 <Transition mode"out-in&q…

Linux文件目录以及文件类型

文章目录 Home根目录 //bin/sbin/etc/root/lib/dev/proc/sys/tmp/boot/mnt/media/usr 文件类型 Home 当尝试使用gedit等编辑器保存文件时&#xff0c;系统默认通常会先打开个人用户的“家”&#xff08;home&#xff09;目录&#xff0c; 建议在通常情况下个人相关的内容也是保…

面向对象设计有六大原则

面向对象设计有六大原则&#xff0c;它们是&#xff1a; 单一职责原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;&#xff1a;一个类应该只有一个主要的职责。这意味着如果一个类负责多个职责&#xff0c;当其中一个职责发生变化时&#xff0c;…

使用 VPN ,一定要知道的几个真相!

你们好&#xff0c;我的网工朋友。 今天想和你聊聊VPN。在VPN出现之前&#xff0c;企业分支之间的数据传输只能依靠现有物理网络&#xff08;例如Internet&#xff09;。 但由于Internet中存在多种不安全因素&#xff0c;报文容易被网络中的黑客窃取或篡改&#xff0c;最终造…

requests爬虫IP连接初始化问题及解决方案

问题背景 在使用HTTPS爬虫IP连接时&#xff0c;如果第一次请求是chunked方式&#xff0c;那么HTTPS爬虫IP连接将不会被初始化。这个问题可能会导致403错误&#xff0c;或者在使用HTTPS爬虫IP时出现SSL错误。 解决方案 为了解决这个问题&#xff0c;我们可以在requests库的ada…

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 …

clickhouse数据结构和常用数据操作

背景, 大数据中查询用mysql时间太长, 使用clickhouse 速度快, 数据写入mysql后同步到clickhouse中 测试1千万数据模糊搜索 mysql 需要30-40秒 clickhouse 约 100ms 一 数据结构和存储引擎 1 查看clickhouse所有数据类型 select * from system.data_type_families; 2 …

03-关系和非关系型数据库对比

关系和非关系型数据库对比 关系型数据库(RDBMS)&#xff1a;MySQL、Oracl、DB2、SQLServer 非关系型数据库(NoSql)&#xff1a;Redis、Mongo DB、MemCached 插入数据结构的区别 传统关系型数据库是结构化数据,向表中插入数据时都需要严格的约束信息(如字段名,字段数据类型,字…

Java概述

接触Java后会发现它的体系有一个特点&#xff0c;就是非常喜欢用“J”字母开头的缩写&#xff0c;比如JCP, JSR, JMS, JPA, JSP, JAX-RS......它们有些是规范&#xff0c;有些是组织的名称&#xff0c;表意多样&#xff0c;对第一次接触的人来说很可能会觉得混乱&#xff0c;本…

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于水基湍流优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…