(三)CMS Collector
有些资料中,为区别parallel collector ,将应用与gc并发成为并行,在接下来的文章中,仍称为并发。
—XX:useConcMarkSweepGC,可以用于minor gc和major gc
cms在gc时,也会有两次短暂停,垃圾收集线程与应用线程并发
并发失败:
如果无法及时清理内存和分配内存,也会暂停整个应用。
OutOfMemoryException:
如果超过98%的时间用来gc,但每次恢复内存不足2%,会抛出该异常。与parallel collector不同,
98%时间的统计并不包括‘并发收集’的时间,只计算停止应用线程来收集垃圾的时间
浮动垃圾:
gc线程与应用线程并发,会导致一部分对象在被标记为活对象之后,在本次gc结束前,成为了死对象。这些死对象就是所谓浮动垃圾,在下一次gc时会被清理。因此建议,为浮动垃圾多分配20%的老年代。
暂停:
cms在一个major垃圾收集周期中,会暂停两次,两次都是对根引用直接可达的对象进行标记,因为是应用线程与gc 线程并发,所以,标记两次,以确保正确。
并发阶段:
在两次暂停之间,生成了可达对象(这次包括了非直接可达对象)的图,第二次暂停后,开始清除垃圾。
生成图和清除垃圾都是与应用并发的,此时,应用不会停止,但是吞吐量会下降。
并发收集:
串行垃圾收集器在老年代满了之后,暂停引用开始major gc。cms则会预估垃圾回收和老年代即将填满的时间,在老年代装满之前开始major gc。cms如果因为并发失败引发的暂停开销会比串行收集器的暂停开销更大。
-XX:CMSInitiatingOccupancyFraction=<N>:指定老年代占用多大比例时,开始并发gc
暂停:
cms在major gc会有两次暂停,mark和remark。minor gc也会有短暂停,minor gc和major gc并发进行,为了避免两次暂停重合成一次长暂停,cms会把remark暂停安排在两次minor gc之间。
增长模式在1.8被废弃
(三)CMS Collector的更多相关文章
- CMS Collector and G1 Collector
Understanding the CMS Collector CMS has three basic operations: CMS collects the young generation (s ...
- Java虚拟机垃圾回收(三) 7种垃圾收集器
Java虚拟机垃圾回收(三) 7种垃圾收集器 主要特点 应用场景 设置参数 基本运行原理 在<Java虚拟机垃圾回收(一) 基础>中了解到如何判断对象是存活还是已经死亡?在<Java ...
- JVM(三) 垃圾回收时间点和垃圾收集器
收集器组合章节来自第一篇参考文章,非原创,作者总结地非常好! 分代收集相关概念来自参考文章第二篇,非原创 第二篇参考资料的文章质量很高,推荐阅读! 分代收集(Ge ...
- java GC垃圾回收机制G1、CMS
CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合.在启动JVM参数加上-XX:+UseConcMa ...
- G1 collector 介绍
背景:由于CMS算法产生空间碎片和其它一系列的问题缺陷,HotSpot提供了另外一种垃圾回收策略,G1(也就是Garbage First)算法,该算法在JDK7u4版本被正式推出,官网对此描述如下: ...
- CMS垃圾收集器——重新标记和浮动垃圾的思考
<深入理解java虚拟机 第二版 JVM高级特性与最佳实践>里面提到 CMS 垃圾收集器. CMS 垃圾收集器的垃圾回收分4个步骤: 初始标记(initial mark) 有 STW 并发 ...
- The The Garbage-First (G1) collector since Oracle JDK 7 update 4 and later releases
Refer to http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html for detail. 一些内容复制到这儿 Th ...
- Understanding CMS GC Logs--转载
原文地址:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs Understanding CMS GC Logs By Po ...
- Garbage Collectors – Serial vs. Parallel vs. CMS vs. G1 (and what’s new in Java 8)
转自:http://blog.takipi.com/garbage-collectors-serial-vs-parallel-vs-cms-vs-the-g1-and-whats-new-in-ja ...
随机推荐
- D7控件\dw_cd_VirtualTreeview_v4.5.2\Demos\Advanced---TVirtualStringTree用法
VST1: TVirtualStringTree; //按钮公用函数,根据不同 标签tag区分, Screen.Cursor := crHourGlass; //设置屏幕鼠标的形状为crhourGla ...
- Amazon S3云存储服务器的功能及编程接口
http://blog.csdn.net/iamshaofa/article/details/7877785/
- xor方程组消元 UVA 11542 Square
题目传送门 题意:给n个数,选择一些数字乘积为平方数的选择方案数.训练指南题目. 分析:每一个数字分解质因数.比如4, 6, 10, 15,, , , , 令,表示选择第i个数字,那么,如果p是平方数 ...
- 实战Hadoop中遇到的几个类、接口说明
1. Configuration :public 类型接口,这个接口包含的多数方法是进行与数据属性<key,value>有关的操作. 几个方法: 1)addProperty(String ...
- Web标准中用于改善Web应用程序性能的各种方法总结
提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...
- ubifs性能优化分析
本文通过分析ubifs的mount.read.write和commit流程,挖掘ubifs背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案. 1. ubifs ...
- ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线
hdu 1811 Rank of Tetris Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & % ...
- ubuntu13.04下安装jdk7
参考http://www.neversaydie.cc/ubuntu-install-jdk-in-detailed/ 而来 1.手工从Oralce官网下载jdk-7u25-linux-x64.gz ...
- HDU 3652 B-number(数位DP)
题目链接 学习大神的数位DP模版. #include <iostream> #include <cstdio> #include <cstring> using n ...
- Android -- 自定义ProgressBar图片
注:所有的进度条都要配置 android:indeterminate="false" android:indeterminateDrawable="样式文件 ...