深入JVM内核—原理与优化之gc参数学习
来源:互联网 发布:linux的保存命令 编辑:程序博客网 时间:2024/06/05 10:19
堆:
新生代+老年代;
新生代(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压力,需要注意:
软件设计架构
代码如何写
堆空间如何分配:
阅读全文
0 0
- 深入JVM内核—原理与优化之gc参数学习
- 深入JVM内核-原理、诊断与优化
- 深入JVM内核——原理、诊断与优化
- 【备忘】深入JVM内核—原理、诊断与优化视频教程
- 深入JVM内核—原理与优化之六类加载器
- 深入JVM内核—原理与优化之七性能监控工具
- 深入JVM内核—原理与优化之八堆分析
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- 深入JVM内核---GC算法
- JVM原理优化及GC
- JVM原理及GC优化
- JVM学习笔记4—GC参数
- 《深入java虚拟机--JVM高级特性与最佳实践》学习笔记(三) GC原理与垃圾收集器
- 深入学习JVM笔记三 GC算法与种类
- JVM之GC参数整理
- JVM原理优化和GC的处理
- 深入JVM系列(二)之GC机制、收集器与GC调优
- 深入JVM系列(二)之GC机制、收集器与GC调优
- 定义模板
- Fresco实现图片放大
- 【DP】BAJ-Bytecomputer
- 张亦鸣: eBPF 简史
- 低照度图像修复方法总结
- 深入JVM内核—原理与优化之gc参数学习
- 汉诺塔1
- ActiveMQ消息队列
- java基础第四讲JavaScript详解
- 汉诺塔2
- vue-router传参数(get和post方式)
- SQLite jdbc 单例
- IDEA错误:Cannot start compilation: the output path is not specified for module "Test". (转)
- 汉诺塔3