Major GC和Full GC的区别是什么?触发条件呢?
来源:互联网 发布:淘宝贷款最多贷多少钱 编辑:程序博客网 时间:2024/05/17 07:55
作者:RednaxelaFX
链接:http://www.zhihu.com/question/41922036/answer/93079526
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:http://www.zhihu.com/question/41922036/answer/93079526
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:
最简单的分代式GC策略,按HotSpot VM的serial GC的实现来看,触发条件是:
当然也总有例外。Parallel Scavenge(-XX:+UseParallelGC)框架下,默认是在要触发full GC前先执行一次young GC,并且两次GC之间能让应用程序稍微运行一小下,以期降低full GC的暂停时间(因为young GC会尽量清理了young gen的死对象,减少了full GC的工作量)。这是HotSpot VM里的奇葩嗯。
并发GC的触发条件就不太一样。以CMS GC为例,它主要是定时去检查old gen的使用量,当使用量超过了触发比例就会启动一次CMS GC,对old gen做并发收集。
- Partial GC:并不收集整个GC堆的模式
- Young GC:只收集young gen的GC
- Old GC:只收集old gen的GC。只有CMS的concurrent collection是这个模式
- Mixed GC:收集整个young gen以及部分old gen的GC。只有G1有这个模式
- Full GC:收集整个堆,包括young gen、old gen、perm gen(如果存在的话)等所有部分的模式。
最简单的分代式GC策略,按HotSpot VM的serial GC的实现来看,触发条件是:
- young GC:当young gen中的eden区分配满的时候触发。注意young GC中有部分存活对象会晋升到old gen,所以young GC后old gen的占用量通常会有所升高。
- full GC:当准备要触发一次young 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。
当然也总有例外。Parallel Scavenge(-XX:+UseParallelGC)框架下,默认是在要触发full GC前先执行一次young GC,并且两次GC之间能让应用程序稍微运行一小下,以期降低full GC的暂停时间(因为young GC会尽量清理了young gen的死对象,减少了full GC的工作量)。这是HotSpot VM里的奇葩嗯。
并发GC的触发条件就不太一样。以CMS GC为例,它主要是定时去检查old gen的使用量,当使用量超过了触发比例就会启动一次CMS GC,对old gen做并发收集。
阅读全文
2 0
- Major GC和Full GC的区别是什么?触发条件呢?
- Major GC和Full GC的区别是什么?触发条件呢?
- Major GC和Full GC的区别以及触发条件
- Major GC和Full GC的区别
- Major GC和Full GC的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- Minor GC、Major GC和Full GC之间的区别
- iOS 图片折叠效果
- |第一天|unity学习
- xyk
- What 3 habits can transform my life completely?
- UI技能CD倒计时
- Major GC和Full GC的区别是什么?触发条件呢?
- 最近的2个bug,iis读本地文件权限,vs2017调试js
- 我的博客开通了!
- PHP--session
- 面试
- windows下 在Python中安装numpy和pandas
- 如何准备转型为项目经理
- 使用java代码打开关闭浏览器(指定的浏览器或者计算机默认的浏览器)
- 分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令