Minor GC、Major GC与Full GC讲解
Minor GC
介绍
- 年轻代的垃圾回收,该GC会清理伊甸园区和幸存区。
- 因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。
- Minor GC会引发STW:暂停其它用户线程,等垃圾回收结束,用户线程才恢复运行。
触发条件
伊甸园区空间不足会触发,幸存区空间不足不会触发,但是触发Minor GC就会清理伊甸园区和幸存。
触发结果
经过一次Minor GC后
- 伊甸园区没有被回收的对象被放到to区,并且年龄计数器设置为1。
- from区的没有被回收的对象到to区,年龄计数器加一,from和to区交换,此时to为空。
总结:复制之后有交换,谁空谁是to区
Major GC
介绍
- 对老年代的垃圾回收。
- Major GC的速度一般会比Minor GC慢10倍以上,STW的时间更长。
- 如果Major GC后,内存还不足,就报OOM了。
触发条件
老年代空间不足先触发Minor GC,之后空间还不足则触发Major GC( 出现了Major GC,经常会伴随至少一次的Minor GC )
Full GC
介绍
清理整个堆空间,包括年轻代、老年代和元空间(方法区),非常慢。
触发条件
调用System.gc(),系统建议执行Full GC,但不是必然执行。
老年代空间不足。
方法区空间不足。
通过Minor GC后进入老年代的平均大小大于老年代的可用内存。
from向to复制的时候,对象大小大于to的内存,则把对象转移到老年代,且老年代的的可用内存小于对象大小。
说明:Full GC是开发中尽量避免的,减少Major GC 和 Full GC的发生就是调优。
对象申请堆区空间流程
- 判断伊甸园区是否能放下,如果能放下就放,如果放不下则触发Minor GC。
- Minor GC后伊甸园区能放下就放,如果放不下,说明该对象是超大对象直接放到老年代。
- Minor GC后,在伊甸园区存活的对象要进入幸存区。
- 如果幸存区放不下或者幸存区的对象的年龄计数器大于15,则直接放到老年代。
- 如果老年代也放不下,触发Major GC。
- Major GC后再次判断是否老年代能放下该对象,如果不够说明堆内存空间不够->OOM。
- Minor GC后,在伊甸园区存货的对象要进入幸存区。
总结:垃圾回收频繁发生在新生区,很少发生在养老区,几乎不发生在永久区/元空间
Minor GC、Major GC与Full GC讲解相关推荐
- Minor GC,Major GC,Full GC -- hotspot VM GC讲解
针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种: Partial GC:并不收集整个GC堆的模式 Young GC:只收集young gen的GC Old GC:只收集old ge ...
- GC之Minor/Young/Major GC的区别
2019独角兽企业重金招聘Python工程师标准>>> 我们平时提及Minor GC.Young GC.Major GC,它们之间的关系是怎样的呢? 如下图1所示,一图胜千言,这是J ...
- 4、JVM垃圾回收机制、新生代的GC、GC(Minor GC、FullGC)、GC日志、JVM参数选项、元空间(笔记)
4.JVM垃圾回收机制 4.1.新生代的GC 4.1.1.串行GC(SerialGC) 4.1.2.并行回收GC(Parallel Scavenge) 4.1.3.并行GC(ParNew) 4.2.G ...
- java年轻代minor gc_jvm之年轻代(新生代)、老年代、永久代以及GC原理详解、GC优化...
关于JVM,也许你听过这些术语:年轻代(新生代).老年代.永久代.minor gc(young gc).major gc.full gc 不要急,先上图,这是jvm 堆内存结构图 仔细的你发现了 图中 ...
- Minor GC,MajorGC、Full GC
一 点睛 Minor GC:新生代的 GC. Major GC:老年代的 GC. Full GC:整堆收集,收集整个 Java 堆和方法区的垃圾收集. JVM 的调优的一个环节,就是垃圾收集,我们需要 ...
- GC 调优(实战篇) - GC参考手册
说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间内分配的量; 同理, Promotion Rate 翻译为 提升速率; 您应该已经阅读了前面的章 ...
- 7. GC 调优(实战篇) - GC参考手册
本章介绍导致GC性能问题的典型情况.相关示例都来源于生产环境, 为演示需要做了一定程度的精简. 说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间 ...
- 6. GC 调优(工具篇) - GC参考手册
进行GC性能调优时, 需要明确了解, 当前的GC行为对系统和用户有多大的影响.有多种监控GC的工具和方法, 本章将逐一介绍常用的工具. 您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 J ...
- 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例
53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...
- java gc g1_Java 分代式GC与G1算法
前言:最近浏览了不少分代式GC和G1算法的文章,好多文章的知识点都比较分散,要几篇文章结合起来对比才能明白,特别是R大的文章,很精辟但不好理解,这里我就把我最近收集并结合自己理解的有关分代式GC和G1 ...
最新文章
- AI与网络安全的未来:数据集与协同能力
- FeiBoStr 斐波那契
- Docker使用阿里云docker镜像加速
- Elasticsearch Metric Aggregation指标聚合详解
- 知识图谱基础知识之一——人人都能理解的知识图谱
- springMVC两种方式实现多文件上传及效率比较
- c++频繁读取数据会丢失_透析中会丢失什么营养?透析日的饮食需要注意什么?...
- php如何判断是ajax,php如何判断是ajax
- 和尚感谢你,要避开,这样才能求到福
- JavaScript内置的Math对象(附实例)
- 个人网页制作 大学生个人网页设计 个人网站模板 简单静态HTML个人网页作品
- 局域网屏幕监控软件_实验14:局域网监控软件的应用
- 修改联通服务器,联通光猫dns设置服务器地址
- 离线RSS浏览FeedDemon
- Android实现横竖屏切换,以及手机横竖屏旋转的时候,实现横竖屏切换
- AngularJs:Directive指令用法
- 实现外网Ping通WSL(网卡桥接方式实现)
- 快捷键切换(Linux)
- Qt的QImage类
- LeetCode(数据库)- 统计各专业学生人数
热门文章
- ubuntu选择编辑器select-editor
- Springboot毕业设计毕设作品,心理评测系统 开题报告
- 用上office365后配合RaiDrive效率如何提高
- 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
- 公司欠债不还,法人不再被列入失信黑名单啦
- chrome审查元素功能
- 做外贸有没有好的软件?
- 为了防止同行偷窥行业机密,小明决定将上面的实际营业额重新记录一份,这次记录的时候,把上面数组中的内容倒着记录,并将所有的负数按0记录。请你帮小明把上面的结果按小明的规则重新保存到一个新数组中,并打印出
- GAT原论文阅读笔记
- hss网元 java_在NB-IoT建构和流程中,作为网元实体的MME和HSS进行了哪些功能方面的升级?...