几种常见GC方式对比
2017-08-01 17:54
281 查看
GC算法
标记-清除复制
标记-整理
分代收集
一些收集器
1. Serial
* 单线程收集器
2. ParNew
Serial的多线程版3. Parallel Scavenge
* 关注吞吐率
4. CMS收集器
* stop the world 时间最短
5. G1收集器
使用G1: -XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200, 设置最大间隔时间G1将新生代、老年代的物理空间划分取消了
将堆划分为若干区,某个区可能是Eden,可能是Survivor,也可能是Old
增加了一个类型:Humongous,保存巨型对象
永久代改为元空间(metaSpace)
两种GC模式:Young GC和Mixed GC
Young GC:对Eden区进行GC,部分数据直接晋升到Old区,部分移到Survivor区。
RSet概念(没看懂),大体是一个指针,标记哪些被引用
Card Table(没看懂),大体是减少赋值器的扫描处理开销。
1.根扫描 2. 更新RS 3. 处理RS 4. 对象拷贝 5. 处理引用队列
MixedGC
正常的YoungGC + 回收部分老年代分区
步骤:1. 全局并发标记 2. 拷贝存活对象
全局并发标记:1. 初始标记 2. 跟区域扫描 3. 并发标记 4. 最终标记 5. 清除垃圾
调优
XX:MaxGCPauseMillis
XX:G1HeapRegionSize
XX:ParallelGCThreads
XX:ConcGCThreads
XX:InitiatingHeapOccupancyPercent
退化为Full GC
并发模式失败
晋升失败或者疏散失败
巨型对象分配失败
使用Serial模式,进行Full GC
参考链接
Java GC讲解深入理解 Java G1 垃圾收集器
相关文章推荐
- Android中WIFI常见的几种加密方式(详细)
- 常见的几种字符编码方式 ASCII Unicode UTF-8 GBK
- Vue2几种常见开局方式详解
- Javascript中的几种继承方式对比分析
- JS常用的几种数组遍历方式以及性能分析对比实例详解
- Hive的几种常见的数据导入方式
- 线程池的几种常见的创建的方式
- 互联网及移动广告常见的几种计费方式,包括CPC、CPM、CPA、CPD、CPS、dCPM
- Tomcat部署项目的几种常见方式
- 几种常见SQL分页方式效率比较
- 常见的几种矩阵分解方式
- 几种常见的基于Lucene的开源搜索解决方案对比
- css中常见几种float方式以及倒计时(刷新页面不清)
- PPPOE、Web+Portal、802.1x常见三种认证方式对比
- 几种常见的基于Lucene的开源搜索解决方案对比
- 几种常见的基于Lucene的开源搜索解决方案对比
- 几种常见消息加密方式
- [ lucene其他 ] 几种常见的基于Lucene的开源搜索解决方案对比[转]
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
- [转] 三大常见Flex通信方式优势对比