文档章节

java G1

o
 ovirtKg
发布于 2017/02/24 10:15
字数 724
阅读 51
收藏 0

应对  多CPU和大内存的应用场景中,旨在大多数情况下,在可预测的垃圾回收时间内,获得更大的吞吐量为目标,G1垃圾收集器全面支持JDK7 update 4 及之后的版本,G1 的设计场景主要是: 

(1)应用在高并发应用程序中像CMS垃圾收集器一样,快速响应 
(2)在整理内存碎片空间上花费更短的停顿时间 
(3)可预测的GC停顿时间 
(4)更高的吞吐量 
(5)小内存的Java堆也可以用G1  

 

G1对比CMS垃圾收集器,主要有两个部分的不同区别: 

A:使用更紧凑粗粒度的内存区域划分,简称region,它简化了收集管理,消除了之前垃圾收集器潜在的内存碎片问题, 

主要的方案: 这所以CMS存在内存碎片,是因为采用了标记清除,而没有采用复制或整理,原因在于CMS中的old 区 所占空间较大,且里面的存活对象一般较多,因此移动对象消耗资源,效率低,因此只有等待full gc 整理,而cms是根据所设置的占比来定期执行。而fullGC 一般由于old区域空间不足或者system.gc等触发。而G1 通过将 内存划分成多个region,采用了mixed gc ,维护了每个区域的优先级,gc时只选择部分垃圾多的old,采用标记,并发,重新,清除,整理。前四个步骤与cmS类似,但其中并发时所采用的策略大为不同。因此解决了此内存碎片的问题。


B:相比CMS,G1提供了可预测的GC停顿时间,允许用户指定渴望的暂定周期 

full gc  : 触发条件

young GC的平均晋升大小比目前old gen剩余的空间大,则不会触发young GC而是转为触发full GC(因为HotSpot VM的GC里,除了CMS的concurrent collection之外,其它能收集old gen的GC都会同时收集整个GC堆,包括young gen,所以不需要事先触发一次单独的young GC);或者,如果有perm gen的话,要在perm gen分配空间但已经没有足够空间时,也要触发一次full GC;或者System.gc()、heap dump带GC,默认也是触发full GC。



作者:RednaxelaFX
链接:https://www.zhihu.com/question/41922036/answer/93079526
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://blog.csdn.net/u010454030/article/details/51755071

JVM GC调优一则–增大Eden Space提高性能

神奇的G1——Java全新垃圾回收机制

java的gc为什么要分代?

https://my.oschina.net/91jason/blog/493870?p=1

gc时的  GC_root 列表  一般比真正的GC_ROOT 大。

http://www.open-open.com/lib/view/open1482392048975.html#articleHeader4

 

 

 

 

 

 

 

 

 

http://blog.csdn.net/u010454030/article/details/51755071

© 著作权归作者所有

共有 人打赏支持
上一篇: ReentrantReadWriteLock
下一篇: java GC 参数
o
粉丝 3
博文 57
码字总数 48798
作品 0
景德镇
私信 提问
Java 11 究竟比 8 快了多少?看看这个基准测试

开源规划调度引擎 OptaPlanner 官网发布了一个 Java 11 GC 性能基准测试报告。 当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试。GC 是影响 Java 性能的关键因...

h4cd
01/18
0
0
Sun 解释 GI 垃圾回收器 

hk 写道 "InfoQ上继续关注G1,前几天提到JAVA新的垃圾回收器只有购买支持后才能用,现在来自Sun的dannycoward解释这是一个误会。 并且Sun把原文从Although G1 is available for use in this ...

红薯
2009/06/04
385
1
Java有了新垃圾回收器,只有购买支持后才能用 

Java正在变成真金白银。Sun刚刚发布了Java 1.6.0_14 JDK和JRE, 新版当然有大量的bug修正,改进和新特性,如Java HotSpot VM 14.0,JAX WS 2.1.6和JAXB 2.1.10,JavaDB 10.4.2.1,Java Visu...

红薯
2009/05/30
645
5
JVM KnowLedge Collection

标记清除是JVM用于垃圾回收的基本算法 标记清除算法中,引用会从每个线程栈的桢指向程序的堆 从栈开始,循着指针找到所有可能的引用,然后再循着这些引用递归下去。 当递归完成,就找到了所有...

散关清渭
2014/03/01
0
0
Java8刚刚普及,Java12即将发布,程序员吐槽学不动求慢一点

Java8刚普及,还没用上Java 11,Java12就要发布了。可能你会觉得这是一个无关紧要的问题,但对于那些需要在 JVM 中使用 Java 的开发者,或是比较看重 Java 新特性的开发者,每次更新都很期待...

mikechen优知
01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二进制取反

取反,是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。 概念 编辑 补码的规定如下: 对正数来说,最高位为0,其余各位代表数值本身(以二进制表示)...

天王盖地虎626
59分钟前
5
0
OSChina 周一乱弹 —— 可乐进化史

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 分享Radiohead的单曲《Creep》 《Creep》- Radiohead 手机党少年们想听歌,请使劲儿戳(这里) @EdmondFrank :刚...

小小编辑
今天
814
16
容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
5
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
25
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部