58内部使用的垃圾收集器
2017-05-22 16:44
211 查看
对于很多互联网的应用程序来说,快速响应比服务所支持的吞吐量更重要。 在Stop-The-World模式下,在整个垃圾回收的期间,应用程序都提供无法支持外部请求。 虽然Minor GC一般回收时间会比较短,但是Full GC会导致较长时间的服务停顿,尤其是在old内存区比较大的话尤其会更长。 CMS并非不暂停,而是采用两次短暂停。他分为如下几个阶段 - 初始标记(STW initial mark) - 并发标记(Concurrent marking) - 并发预清理(Concurrent precleaning) - 重新标记(STW remark) - 并发清理(Concurrent sweeping) - 并发重置(Concurrent reset) 其中初始标记和重新标记需要暂停用户线程,也叫STW(Stop-The-World)。 收集周期见图一
参数配置:
启用CMS:-XX:+UseConcMarkSweepGC。
开启CMS阶段进行合并碎片选项:-XX:+UseCMSCompactAtFullCollection。由于cms整个过程中不会进行整理、压缩堆空间,造成内存碎片而增加Full GC的次数,但是开启该选项会影响性能。
CMS回收线程:使用-XX:+UseParNewGC选项来开启。ParNew是Serial的并行版本,可以指定GC线程数,默认GC线程数为CPU的数量。可以使用-XX:ParallelGCThreads选项指定GC的线程数。
设置old区GC触发条件:默认CMS是在tenured generation占满68%的时候开始进行CMS收集,如果你的年老代增长不是那么快,并且希望降低CMS次数的话,可以适当调高此值:-XX:CMSInitiatingOccupancyFraction=80
最后贴上58内部用的jvm参数部分配置:
-XX:ParallelGCThreads=20
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+UseCMSCompactAtFullCollection
-XX:CMSInitiatingOccupancyFraction=80
相关文章推荐
- NetBeans使用心得:内存和垃圾收集机制配置
- 技巧:Java垃圾收集器使用小诀窍-Java基础-Java-编程开发
- java7中G1垃圾收集器使用和流程总结
- 查看JVM使用的什么垃圾收集器
- JVM垃圾收集相关经常使用參数
- Java虚拟机中的垃圾收集器使用技巧
- java7中G1垃圾收集器使用和流程总结
- WebSphere Application Server V8 中的垃圾收集,第 1 部分: 使用分代收集策略作为新的默认策略
- [转]使用CMS垃圾收集器产生的问题和解决方案
- [翻译]更有效的使用垃圾收集– 第一部分
- Java垃圾收集器使用小诀窍
- IBM 实现使用称为 mark-sweep-compact(MSC)的垃圾收集算法 2
- javascript基本使用 11 ------垃圾收集和块级作用域
- JVM垃圾收集器使用调查:CMS最受欢迎
- IBM 的 Java 诊断,第 2 部分: 使用 Extensible Verbose Toolkit 进行垃圾收集
- IBM 实现使用称为 mark-sweep-compact(MSC)的垃圾收集算法
- JVM垃圾收集器使用调查:CMS最受欢迎
- JVM 垃圾回收器工作原理及使用实例介绍(GC算法、垃圾收集器、GC参数)
- 《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
- java学习之旅57、58--数组_StringBuilder和StringBuffer的使用_JDK源码分析内部机制、常用方法补充_常见面试题答法