jvm 三种gc类型对比

Young GC/Minor GC

触发时机:Eden区满时触发,Survivor区满不会触发,但Minor GC会引起Survivor区垃圾回收

GC目标:Eden区和Survivor区

耗时:很快,STW时间短

Major GC

触发时机:老年代空间不足时,会先尝试触发Minor GC 如果空间还不足,则触发Major GC

GC目标:只有老年代,只有CMS GC会有单独收集老年代的行为

注:Mixed GC收集整个新生代和部分老年代的垃圾收集,只有G1 GC会有这种行为

耗时:慢10倍以上 STW时间长

Full GC

触发时机:1、调用System.gc()时 系统建议执行Full GC 但是不是必然执行

                   2、老年代空间不足,可见老年代空间不足触发的是Full GC

                   3、方法区空间不足

                    4、通过Minor GC后进入老年代的平均大小大于老年代的可用内存

                    5、由Eden区、s0区向s1区复制时,对象大小大于s1可用内存,则把对象转存到老年代且老年代的可用内存小于该对象大小

GC目标:整个java堆和方法区的垃圾收集

耗时:10倍以上,full GC是开发和调优中尽量避免的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容