深入JVM内核—原理与优化之gc参数学习
2017-11-04 09:05
495 查看
堆:
新生代+老年代;
新生代(Eden+s0+s1);
串行回收器算法:
最古老、最稳定、效率高;
可能会有较长时间的停顿;
-XX:UserSerialGC
- 新生代、老年代使用串行回收;
-新生代复制算法;
-老年代标记-压缩;
并行收集器:
ParNew收集器
-XX:+UseParNewGC
新生代并行;
老年代串行;
- Serial收集器新生代的并行版本
- 复制算法
- 多线程,需要多和支持
- -XX:ParallelGCThreads 限制线程数量
Parallel收集器
类似ParNew;
新生代复制算法,老年代标记压缩算法;
更加关注吞吐量;
-XX:+UseParallelGC
使用Parallel收集器+老年代串行
-XX:+UserParallelOldGC
使用Parallel收集器+并行老年代
参数:
-XX:MaxGCPauseMills
最大停顿时间,单位秒;
-XX:GCTimeRatio
垃圾收集时间占比;
两个值是矛盾的;停顿时间和吞吐量之间的调优;
CMS收集器
并发 标记清除算法;
与标记-压缩相比;
并发阶段会降低吞吐量;(应用程序的线程资源会被GC线程占用掉一部分)
老年代收集器(新生代使用ParNew);
-XX:+UserConcMarkSweepGC
过程比较复杂,着重实现标记:
初始标记(STW):只标记根对象的可达对象,快
*并发标记(和用户线程一起);主要标记过程,标记全部对象;
重新标记(STW);工作量小,并发标记的补充;
并发清除(和用户线程一起);清除不压缩;
特点:
尽可能降低停顿;
会影响系统整体的吞吐量和性能;
清理不彻底;
和用户线程一起执行,不能再空间快满时再清理;
concurrent mode failure; (使用串行)
-XX:+UseCMSCompactAtFullCollection, Full GC后进行一次整理;
-XX:+CMSFullGCsBeforeCompaction,几次GC后进行一次碎片整理
-XX:ParallelCMSThreads,设定CMS的线程数量
为减轻GC压力,需要注意:
软件设计架构
代码如何写
堆空间如何分配:
新生代+老年代;
新生代(Eden+s0+s1);
串行回收器算法:
最古老、最稳定、效率高;
可能会有较长时间的停顿;
-XX:UserSerialGC
- 新生代、老年代使用串行回收;
-新生代复制算法;
-老年代标记-压缩;
并行收集器:
ParNew收集器
-XX:+UseParNewGC
新生代并行;
老年代串行;
- Serial收集器新生代的并行版本
- 复制算法
- 多线程,需要多和支持
- -XX:ParallelGCThreads 限制线程数量
Parallel收集器
类似ParNew;
新生代复制算法,老年代标记压缩算法;
更加关注吞吐量;
-XX:+UseParallelGC
使用Parallel收集器+老年代串行
-XX:+UserParallelOldGC
使用Parallel收集器+并行老年代
参数:
-XX:MaxGCPauseMills
最大停顿时间,单位秒;
-XX:GCTimeRatio
垃圾收集时间占比;
两个值是矛盾的;停顿时间和吞吐量之间的调优;
CMS收集器
并发 标记清除算法;
与标记-压缩相比;
并发阶段会降低吞吐量;(应用程序的线程资源会被GC线程占用掉一部分)
老年代收集器(新生代使用ParNew);
-XX:+UserConcMarkSweepGC
过程比较复杂,着重实现标记:
初始标记(STW):只标记根对象的可达对象,快
*并发标记(和用户线程一起);主要标记过程,标记全部对象;
重新标记(STW);工作量小,并发标记的补充;
并发清除(和用户线程一起);清除不压缩;
特点:
尽可能降低停顿;
会影响系统整体的吞吐量和性能;
清理不彻底;
和用户线程一起执行,不能再空间快满时再清理;
concurrent mode failure; (使用串行)
-XX:+UseCMSCompactAtFullCollection, Full GC后进行一次整理;
-XX:+CMSFullGCsBeforeCompaction,几次GC后进行一次碎片整理
-XX:ParallelCMSThreads,设定CMS的线程数量
为减轻GC压力,需要注意:
软件设计架构
代码如何写
堆空间如何分配:
相关文章推荐
- 深入JVM内核——原理、诊断与优化——GC收集器种类及其参数
- 深入JVM内核——原理、诊断与优化——常用JVM配置参数
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- Java虚拟机深入JVM内核—原理、诊断与优化视频教程
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- 深入JVM内核—原理与优化之六类加载器
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- 第三阶段、深入JVM内核—原理、诊断与优化
- 深入JVM内核—原理与优化之七性能监控工具
- 【备忘】深入JVM内核—原理、诊断与优化视频教程
- 深入JVM内核—原理与优化之八堆分析
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- 深入JVM内核——原理、诊断与优化——GC算法与种类
- 【Spark 深入学习-08】说说Spark分区原理及优化方法
- 【Java】深入理解JVM学习笔记(三) —— GC收集器和内存分配
- 【Java面试整理之JVM】深入理解JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出
- 深入学习JVM内存设置原理和调优
- 深入学习JVM笔记二堆的分配参数
- JVM内存结构以及GC原理学习
- 深入JVM系列之内存模型与内存分配及 AndroidGC原理