首页 > 编程语言 > 详细

java垃圾回收-G1

时间:2020-01-13 21:17:10      阅读:74      评论:0      收藏:0      [点我收藏+]

为什么分代算法: 90%对象熬不过第一次回收;而老对象有98%的概率会一直存活下来
分代好处:把复杂的大问题,分成两类不同的小问题,针对不同的小问题,针对性的分而治之
--年轻代,对象来去频繁,执行时间一定要短、效率要高,采用标记-整理、copy算法,以空间换时间
--老年代,对象不多,次数不频繁,采用内存使用比较高效的算法

G1垃圾回收器, 是JDK7的特性, garbage first,即优先处理垃圾多的内存块
--G1将内存划分成很多小块,每个小块会被标记为E/S/O中的一个(共三大类,不在泾渭分明)
--垃圾回收过程:
---先短暂停止应用-stop the world 做初始标志
---继续应用,开始并行标记-concurrent mark
---再次停止应用,进行final mark 标记并发标记过程中产生的新垃圾
---根据G1原则,选择部分内存片进行回收-stop the world

G1的一个显著特点就是用户设置暂停时间,G1能够做到的原因:G1的第4步,是选择一些内存块,而不是整代内存回收(其他GC都是回收整个generation的内存,而回收内存所需的时间取决于内存的大小,以及实际的垃圾大小,所有回收时间是不可控的),而G1每次不回收整代内存,到底回收多少依赖用户配置的时间,配置的时间短就少回收点,配置的时间长就多回收点,伸缩自如。

优点:内存分成多块,进行内存整理和压缩的代价比较小,可有效规避内存碎片的问题
缺点:如果内存吃紧,对内存的部分回收根本不够,仍需要整代回收,那么工作量一点没有减少,还有因为本身算法复杂,回收性能变差
-G1适合内存稍大一点的应用(一般来说至少4G以上),小内存的应用还是用传统的垃圾回收器比如CMS比较合适
-G1最显著与CMS的,在于它对空间做了整理,减少了空间的碎片化
G1可以基本稳定在0.5S到1S左右的延迟

 

 

参考:https://blog.csdn.net/shipfei_csdn/article/details/103152834/

java垃圾回收-G1

原文:https://www.cnblogs.com/wangsong412/p/12189175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!