GC参数
来源:互联网 发布:网络直播怎么下载 编辑:程序博客网 时间:2024/06/06 17:53
1,最古老,最稳定
2,效率高
3,可能会产生较长的停顿
-XX:+UseSerialGC
--新生代,年老代使用串行回收
--新生代复制算法
--年老代标记-压缩
应用程序线程可能有多个,一旦回收开始,这些线程全部暂停,由GC线程接替运行,在串行回收器中,gc线程只有一个,当GC完成后,应用程序回复运行。
上面两个是串行回收器的日志输出,第一个是新生代的日志输出:GC+执行时间;第二个是FULL GC是老年代的输出。
2.并行收集器
2.1 ParNew(新生代收集器):
-XX:+UseParNewGc 新生代并行,老年代串行
和串行收集器一样,同时又STOP-WORLD出现,即所有程序暂停运行,但它在回收的时候是多个线程进行回收
2.2 Parallel收集器:
--类似ParNew
--新生代复制算法,年老代标记-压缩
--更加关注吞吐量
-- xx:+UseParallelGC : 使用Parallel收集器+年老代串行
-- xx:+UseParalleOldlGC : 使用Parallel收集器+并行年老代
3.CMS收集器(年老代回收器)
--Concurrent Mark Sweep 并发标记清除
--标记清除算法
--并发阶段会降低吞吐量
--年老代收集器(新生代使用ParNew)
-- -XX:+UseConMarkSweepGC
在标记的过程中,应用程序仍然在执行,所有会有新的垃圾产生,标记可能会有不正确,所有要进行修正,重新标记可以说是并发标记的补充,不会花费太多的时间
注意:
标记-清除相对于标-记压缩法会产生碎片,所以使用标记清除算法之后,还有一件必不可少的事情就是把标记清除之后的结果做一次压缩,这也就是为什么串行收集器和并行收集器都使用标记压缩算法而不是标记清除算法(无碎片产生,效果好);
但是为什么CMS用标记-清除?因为它更关注停顿,希望做GC的时候和用户线程一起去工作,若使用标记-压缩算法,在清理的时候,会移动可用对象的空间,应用程序线程可能找不到要用的对象在哪里,所有就很难和应用程序并发执行。
问题:
为了减轻GC压力,我们需要注意什么?1,软件如何设计架构 2,代码如何写 3,对空间如何分配
- GC参数
- GC 参数
- GC参数
- GC参数
- GC参数
- JVM参数--GC
- JVM参数--GC
- GC之---MaxTenuringThreshold参数
- JVM调优:GC 参数
- JVM参数--GC
- 常用的GC参数
- JVM GC参数说明
- JVM-GC参数
- 常用的 GC 参数
- GC相关参数
- gc 推荐参数
- 常用的GC参数
- JVM GC参数配置说明
- eclipse pull提示the current branch is not configured for pull
- https相关、http相关
- HOG 特征的提取--基于scikit-image
- 引用包里面的工具类
- java并发相关
- GC参数
- 微服务
- python学习笔记5
- Spring 注解 事务
- FineUI秘密花园(二) — 一切从头开始
- hdu 2586 How far away ? 【图论-邻接表-图转树-Lca】
- 1002. 写出这个数
- 解析客户端请求信息Headers
- 配置angularjs项目运行环境的几个步骤