Minor GC

介绍

  • 年轻代的垃圾回收,该GC会清理伊甸园区和幸存区。
  • 因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。
  • Minor GC会引发STW:暂停其它用户线程,等垃圾回收结束,用户线程才恢复运行。

触发条件

伊甸园区空间不足会触发,幸存区空间不足不会触发,但是触发Minor GC就会清理伊甸园区和幸存。

触发结果

经过一次Minor GC后

  1. 伊甸园区没有被回收的对象被放到to区,并且年龄计数器设置为1。
  2. 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的发生就是调优。

对象申请堆区空间流程

  1. 判断伊甸园区是否能放下,如果能放下就放,如果放不下则触发Minor GC。
  2. Minor GC后伊甸园区能放下就放,如果放不下,说明该对象是超大对象直接放到老年代。
  3. Minor GC后,在伊甸园区存活的对象要进入幸存区。
  4. 如果幸存区放不下或者幸存区的对象的年龄计数器大于15,则直接放到老年代。
  5. 如果老年代也放不下,触发Major GC。
  6. Major GC后再次判断是否老年代能放下该对象,如果不够说明堆内存空间不够->OOM。
  7. Minor GC后,在伊甸园区存货的对象要进入幸存区。

总结:垃圾回收频繁发生在新生区,很少发生在养老区,几乎不发生在永久区/元空间

Minor GC、Major GC与Full GC讲解相关推荐

  1. Minor GC,Major GC,Full GC -- hotspot VM GC讲解

    针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种: Partial GC:并不收集整个GC堆的模式 Young GC:只收集young gen的GC Old GC:只收集old ge ...

  2. GC之Minor/Young/Major GC的区别

    2019独角兽企业重金招聘Python工程师标准>>> 我们平时提及Minor GC.Young GC.Major GC,它们之间的关系是怎样的呢? 如下图1所示,一图胜千言,这是J ...

  3. 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 ...

  4. java年轻代minor gc_jvm之年轻代(新生代)、老年代、永久代以及GC原理详解、GC优化...

    关于JVM,也许你听过这些术语:年轻代(新生代).老年代.永久代.minor gc(young gc).major gc.full gc 不要急,先上图,这是jvm 堆内存结构图 仔细的你发现了 图中 ...

  5. Minor GC,MajorGC、Full GC

    一 点睛 Minor GC:新生代的 GC. Major GC:老年代的 GC. Full GC:整堆收集,收集整个 Java 堆和方法区的垃圾收集. JVM 的调优的一个环节,就是垃圾收集,我们需要 ...

  6. GC 调优(实战篇) - GC参考手册

    说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间内分配的量; 同理, Promotion Rate 翻译为 提升速率; 您应该已经阅读了前面的章 ...

  7. 7. GC 调优(实战篇) - GC参考手册

    本章介绍导致GC性能问题的典型情况.相关示例都来源于生产环境, 为演示需要做了一定程度的精简. 说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间 ...

  8. 6. GC 调优(工具篇) - GC参考手册

    进行GC性能调优时, 需要明确了解, 当前的GC行为对系统和用户有多大的影响.有多种监控GC的工具和方法, 本章将逐一介绍常用的工具. 您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 J ...

  9. 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例

    53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...

  10. java gc g1_Java 分代式GC与G1算法

    前言:最近浏览了不少分代式GC和G1算法的文章,好多文章的知识点都比较分散,要几篇文章结合起来对比才能明白,特别是R大的文章,很精辟但不好理解,这里我就把我最近收集并结合自己理解的有关分代式GC和G1 ...

最新文章

  1. AI与网络安全的未来:数据集与协同能力
  2. FeiBoStr 斐波那契
  3. Docker使用阿里云docker镜像加速
  4. Elasticsearch Metric Aggregation指标聚合详解
  5. 知识图谱基础知识之一——人人都能理解的知识图谱
  6. springMVC两种方式实现多文件上传及效率比较
  7. c++频繁读取数据会丢失_透析中会丢失什么营养?透析日的饮食需要注意什么?...
  8. php如何判断是ajax,php如何判断是ajax
  9. 和尚感谢你,要避开,这样才能求到福
  10. JavaScript内置的Math对象(附实例)
  11. 个人网页制作 大学生个人网页设计 个人网站模板 简单静态HTML个人网页作品
  12. 局域网屏幕监控软件_实验14:局域网监控软件的应用
  13. 修改联通服务器,联通光猫dns设置服务器地址
  14. 离线RSS浏览FeedDemon
  15. Android实现横竖屏切换,以及手机横竖屏旋转的时候,实现横竖屏切换
  16. AngularJs:Directive指令用法
  17. 实现外网Ping通WSL(网卡桥接方式实现)
  18. 快捷键切换(Linux)
  19. Qt的QImage类
  20. LeetCode(数据库)- 统计各专业学生人数

热门文章

  1. ubuntu选择编辑器select-editor
  2. Springboot毕业设计毕设作品,心理评测系统 开题报告
  3. 用上office365后配合RaiDrive效率如何提高
  4. 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  5. 公司欠债不还,法人不再被列入失信黑名单啦
  6. chrome审查元素功能
  7. 做外贸有没有好的软件?
  8. 为了防止同行偷窥行业机密,小明决定将上面的实际营业额重新记录一份,这次记录的时候,把上面数组中的内容倒着记录,并将所有的负数按0记录。请你帮小明把上面的结果按小明的规则重新保存到一个新数组中,并打印出
  9. GAT原论文阅读笔记
  10. hss网元 java_在NB-IoT建构和流程中,作为网元实体的MME和HSS进行了哪些功能方面的升级?...