GC选择之CMS 并发标记清除
CMS收集器 Concurrent Markup Sweep 并发标记清除
使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量
算法作用在老年代以及永久区(新生代使用ParNew)
-XX:+UseConcMarkSweepGC
CMS运行过程
1.初始标记(用户线程停止)
根可以关联到的对象
速度快
2.并发标记(和用户线程一起)
主要标记过程,标记全部对象
3.重新标记(用户线程停止)
由于并发标记时,用户线程依然进行因此在正式清理前,再做修正。
4.并发清除(和用户线程一起)
基于标记结果,直接清理对象

特点:
1.尽可能降低停顿
2.会影响系统整体吞吐量和性能
比如,在用户线程运行过程中,分一半CPU去做CMS GC,系统性能在GC阶段,反应速度就下降一半。
3.清理不彻底。
在清理阶段,用户线程还在执行,会产生新的垃圾,无法清理。
4.因为和用户线程一起执行,不能在空间将满时再清理。
-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值。 设定老年代空间被使用多少后触发。
如果不幸内存预留空间不足,就会引起concurrent mode failure.
5.在CMS遇到空间不足时,可以使用串行收集器作为后备。
6.做标记清除时,可以不停止应用线程,但会产生内存碎片,而做标记压缩时,会Stop-The-World,但不会产生内存碎片。
-XX:+UseCMSCompactAtFullCollection Full GC后,进行一次碎片整理。
整理过程是独占的,会引起停顿时间变长。
减轻GC压力 软件如何架构,代码如何写,堆空间如何分配。
1.性能的根本在应用。
2.GC参数属于微调。
3.GC参数设置不合理,会影响性能,产生大的延时。
GC选择之CMS 并发标记清除的更多相关文章
- JVM之GC算法、垃圾收集算法——标记-清除算法、复制算法、标记-整理算法、分代收集算法
标记-清除算法 此垃圾收集算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记对象,它的标记过程前面已经说过——如何判断对象是否存活/死去 死去的对象就会 ...
- (转)jvm具体gc算法介绍标记整理--标记清除算法
转自:https://www.cnblogs.com/ityouknow/p/5614961.html GC算法 垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为“GC”, ...
- 关于GC(下):CMS和G1GC的比较
简称 STW -- Stop the World,暂停所有在执行的线程 简史 2004年Sun实验室第一次发表G1论文 JDK6U14中第一次作为实验选项引入 JDK7中开始作为替换CMS的方案 JD ...
- 常见GC算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。
常见GC算法 在C/C++中是由程序员自己去申请.管理和释放内存的,因此没有GC的概念.而在Java中,专门有一个用于垃圾回收的后台线程来进行监控.扫描,自动将一些无用的内存进行释放.下面介绍几种常见 ...
- CMS收集器和G1收集器 他们的优缺点对比 G1只有并发标记才不会stop-the-world 其他都会停下来(阿里多次问到)
CMS收集算法 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 G1收集算法 参考:G1 垃圾收集器入门 首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop ...
- JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)
相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...
- <转>GC其他:引用标记-清除、复制、标记-整理的说明
注:本文根据<深入理解Java虚拟机>第3章部分内容整理而成. 对象死亡历程 1.基本的mark&sweep是必须的,后续的都是对他的改进, 2.young代理的survivor就 ...
- GC算法精解(五分钟让你彻底明白标记/清除算法)
GC算法精解(五分钟让你彻底明白标记/清除算法) 相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底 ...
- GC其他:引用标记-清除、复制、标记-整理的说明
对象死亡历程 1.基本的mark&sweep是必须的,后续的都是对他的改进, 2.young代理的survivor就是使用了复制算法,避免碎片 3.还有标记整理算法(压缩),就是将存活的对象移 ...
随机推荐
- Sql 2008R2 windows身份好用 ,sa身份不好用
Sql server2008r2 安装完毕以后 windows身份验证好用,sa身份不好用,解决方法步骤如下: 1.首先用windows身份登录 2.SQL实例右键属性 3.安全性这一项 4.选择wi ...
- 【SqlServer系列】子查询
1 概述 1.1 已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [Sq ...
- Health Check in eShop -- 解析微软微服务架构Demo(五)
引言 What is the Health Check Health Check(健康状态检查)不仅是对自己应用程序内部检测各个项目之间的健康状态(各项目的运行情况.项目之间的连接情况等),还包括了应 ...
- 51nod_1122:机器人走方格 V4 (矩阵快速幂)
题目链接 昨天上随机信号分析讲马氏链的时候突然想到这题的解法,今天写一下 定义矩阵A,Ans=A^n,令A[i][j]表示,经过1次变换后,第i个位置上的机器人位于第j个位置的情况数,则Ans[i][ ...
- Druid 详细介绍
文章来自阿里巴巴 Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可 ...
- effective java 第2章-创建和销毁对象 读书笔记
背景 去年就把这本javaer必读书--effective java中文版第二版 读完了,第一遍感觉比较肤浅,今年打算开始第二遍,顺便做一下笔记,后续会持续更新. 1.考虑用静态工厂方法替代构造器 优 ...
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(二)引入attention机制
在上一篇博客中介绍的论文"Show and tell"所提出的NIC模型采用的是最"简单"的encoder-decoder框架,模型上没有什么新花样,使用CNN ...
- python爬虫--自动获取seebug的poc
简单的写了一个爬取www.seebug.org上poc的小玩意儿~ 首先我们进行一定的抓包分析 我们遇到的第一个问题就是seebug需要登录才能进行下载,这个很好处理,只需要抓取返回值200的页面,将 ...
- Ubuntu下安装codeblocks
ubuntu 16.04LTS 下Code::Blocks 16.01 安装 Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件. ...
- IMPEX
1.Impex是基于java Model的一种面向对象的数据操作手段,因此写impex代码前需要理清java Model之间的依赖关系. 2.基本语法:mode type[modifier=value ...