福哥答案2021-01-02:

MinorGC 在年轻代空间不足的时候发生。

MajorGC 指的是老年代的 GC,出现 MajorGC 一般经常伴有 MinorGC。

FullGC 老年代无法再分配内存;元空间不足;显示调用 System.gc;像 CMS 一类的垃圾回收器,在 MinorGC 出现 promotion failure 时也会发生 FullGC。

[答案来自此链接:](https://www.zhihu.com/question/437493648)

MinorGC 一般指清理 Young space (Eden and Survivor spaces) 的 GC。例如 G1GC 还有 ShenandoahGC 中的 YoungGC. 触发一般是:

Allocation Failure: 分配对象失败,空间不足. 内存分配流程,涉及到了 bump-the-pointer, TLAB,Allocation Prematch 这些机制, 请参考。

Survivor 区满了,需要拷贝。

不同的 GC 还会有自己个性化的触发机制,例如 G1GC 还有Shenandoah GC 的 TLAB 分配失败剩余空间大于最大浪费空间直接在Eden分配也失败,ZGC 的预热触发等等。

MajorGC 一般指清理 Tenured space 的 GC。例如 G1GC 还有 ShenandoahGC 中的 OldGC. 一般由 MinorGC 触发,并且回收的空间依然不足,则可能触发 MajorGC。还有一些特殊的机制,例如 G1GC 的Homongous Allocation(大对象分配),在分配超过 RegionSize 一半大小的对象时,会触发 OldGC。 FullGC 一般指清理 所有 space 的 GC。触发时机一般是:

System.gc()被调用并且没有指定关闭显示GC,就是没有指定-XX:+DisableExplicitGC这个JVM flag。

老年代也满了。

堆外内存满了(JVM内存结构请参考:谁能给我详细讲解一下JVM的详细内存?),例如metaspace,代码即时编译缓存,直接内存,mmap内存。

gc 担保失败,请参考:-XX:-HandlePromotionFailure。

***

[评论](https://user.qzone.qq.com/3182319461/blog/1609543471)

java发生fullgc的时机_2021-01-02:java中,MinorGC、MajorGC、FullGC 什么时候发生?相关推荐

  1. JVM基础 -> GC分代: MinorGC MajorGC FullGC Mixed GC

    GC分代: MinorGC MajorGC FullGC Mixed GC MinorGC 也叫新生代GC:发生在新生代的垃圾回收,因为新生代的特点,MinorGC非常频繁,且回收速度比较快,每次回收 ...

  2. java语言编程基础_Java编程基础02——Java语言基础

    1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常 ...

  3. 一步一步往上爬 学习毕老师java视频的第01.02天

    ---------------------- <a href="http://edu.csdn.net/heima" target="blank"> ...

  4. 【初级01】java JVM核心技术(1):字节码、类加载器、GC机制

    1.编程语言概述 编程语言有不同的分类方法: 面向过程.面向对象.面向函数 静态类型.动态类型 编译执行.解释执行 有虚拟机.无虚拟机 有GC.无GC Java语言是一种面向对象.静态类型.编译执行, ...

  5. 没有与这些操作数【】匹配的运算符_[02]java数据类型和运算符等知识

    00 Java中的注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释.注释不会出现在字节码文件中,即Java编译器编译时会跳 ...

  6. JVM内存模型、逃逸分析以及发生GC的时机

    文章目录 1. 整体内存模型图 ①:堆 ②:栈与栈帧 ③:方法区 ④:程序计数器 ⑤:本地方法栈 2. JVM参数设置 GC日志打印参数设置 3. JVM内部的对象创建流程(new 对象流程) 4. ...

  7. 【模型】【课程笔记】01+02+03 金融风险管理导论

    本文为课程<金融风险管理>第1-3章学习笔记,用于知识点总结和复习,对应教材<Quantitative Risk Management(2015)>,标号为原版书公式以便查阅. ...

  8. [Java 教程 01] Hello,Java!

    前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的jav ...

  9. java class对象创建时机_Java面向对象编程-类的声明周期

    第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...

最新文章

  1. 【组队学习】【24期】Docker教程
  2. 面试体会|微软、头条、滴滴、爱奇艺NLP面试感想
  3. Flask学习记录之Flask-SQLAlchemy
  4. python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载
  5. 怎么样减少电脑对人的辐射
  6. Linux之whereis命令
  7. prototype、JQuery中跳出each循环的方法
  8. Qt捕捉窗口关闭事件
  9. 催眠与大脑的信息处理
  10. OCR识别提取图片中文字原理
  11. 如何下载3GPP协议
  12. 12306 余票检测软件
  13. 67. 把字符串转换成整数
  14. Linux二进制exploit入门
  15. 【数据库】Oracle基础命令
  16. IT的幽默 典型的人傻钱多,地主家的傻儿子系列! 人不学习枉少年
  17. Bt5 R3 播放mp3
  18. pytroch获取中间变量/feature
  19. 初学Qt(Day03)
  20. 焊接工艺技巧与电烙铁使用——经验篇

热门文章

  1. matlab求系统根轨迹代码_要想正确画出根轨迹,先搞清楚这8大法则再说!
  2. localhost、127.0.0.1对网络编程造成不通的说明
  3. 【翻译】卡通图解DNS,你的信息怎么被泄露的?
  4. 查看Linux服务器的CPU详细信息
  5. 关于C语言中递归的一点点小问题
  6. 偶对称离散余弦变换 EDCT
  7. UITableView 点击选中改变字体颜色并记录
  8. 用户和组相关的配置文件总结
  9. MySql查找几个字段的值一样的记录
  10. GridView中列表的“双击事件”