博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java G1
阅读量:6844 次
发布时间:2019-06-26

本文共 1303 字,大约阅读时间需要 4 分钟。

hot3.png

应对  多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

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

转载于:https://my.oschina.net/ovirtKg/blog/845248

你可能感兴趣的文章
【十年路线图】Facebook 帝国:AI、VR将成两大支柱
查看>>
大型分布式C++框架《二:大包处理过程》
查看>>
当前深度神经网络模型压缩和加速都有哪些方法?
查看>>
高并发场景之RabbitMQ篇
查看>>
改变你对世界看法的五大计算机视觉技术
查看>>
探寻教育信息化着力点,创新四川省教育厅IT管理
查看>>
iptables实现IP地址重定向(转发)
查看>>
军方让我做即时通讯,好好交代一下网络安全问题(附源码)
查看>>
11【在线日志分析】之redis-3.2.5 install(单节点)
查看>>
Uvaoj10054 - The Necklace
查看>>
玩转树莓派:OpenHAB的入门(二)
查看>>
.Net 中的序列化与反序列化 (转)
查看>>
linux系统管理 简单常用命令
查看>>
人工智能现在可以作画了
查看>>
重温.NET下Assembly的加载过程
查看>>
华先胜:城市大脑模仿者众多,揭秘阿里原版真正的技术实力
查看>>
使用 redis 缓存的经验
查看>>
硬盘修复专题帖
查看>>
udev安全补丁
查看>>
oracle修改归档日志路径
查看>>