java发生fullgc的时机_2021-01-02:java中,MinorGC、MajorGC、FullGC 什么时候发生?
福哥答案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 什么时候发生?相关推荐
- JVM基础 -> GC分代: MinorGC MajorGC FullGC Mixed GC
GC分代: MinorGC MajorGC FullGC Mixed GC MinorGC 也叫新生代GC:发生在新生代的垃圾回收,因为新生代的特点,MinorGC非常频繁,且回收速度比较快,每次回收 ...
- java语言编程基础_Java编程基础02——Java语言基础
1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常 ...
- 一步一步往上爬 学习毕老师java视频的第01.02天
---------------------- <a href="http://edu.csdn.net/heima" target="blank"> ...
- 【初级01】java JVM核心技术(1):字节码、类加载器、GC机制
1.编程语言概述 编程语言有不同的分类方法: 面向过程.面向对象.面向函数 静态类型.动态类型 编译执行.解释执行 有虚拟机.无虚拟机 有GC.无GC Java语言是一种面向对象.静态类型.编译执行, ...
- 没有与这些操作数【】匹配的运算符_[02]java数据类型和运算符等知识
00 Java中的注释 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释.注释不会出现在字节码文件中,即Java编译器编译时会跳 ...
- JVM内存模型、逃逸分析以及发生GC的时机
文章目录 1. 整体内存模型图 ①:堆 ②:栈与栈帧 ③:方法区 ④:程序计数器 ⑤:本地方法栈 2. JVM参数设置 GC日志打印参数设置 3. JVM内部的对象创建流程(new 对象流程) 4. ...
- 【模型】【课程笔记】01+02+03 金融风险管理导论
本文为课程<金融风险管理>第1-3章学习笔记,用于知识点总结和复习,对应教材<Quantitative Risk Management(2015)>,标号为原版书公式以便查阅. ...
- [Java 教程 01] Hello,Java!
前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的jav ...
- java class对象创建时机_Java面向对象编程-类的声明周期
第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...
最新文章
- 【组队学习】【24期】Docker教程
- 面试体会|微软、头条、滴滴、爱奇艺NLP面试感想
- Flask学习记录之Flask-SQLAlchemy
- python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载
- 怎么样减少电脑对人的辐射
- Linux之whereis命令
- prototype、JQuery中跳出each循环的方法
- Qt捕捉窗口关闭事件
- 催眠与大脑的信息处理
- OCR识别提取图片中文字原理
- 如何下载3GPP协议
- 12306 余票检测软件
- 67. 把字符串转换成整数
- Linux二进制exploit入门
- 【数据库】Oracle基础命令
- IT的幽默 典型的人傻钱多,地主家的傻儿子系列! 人不学习枉少年
- Bt5 R3 播放mp3
- pytroch获取中间变量/feature
- 初学Qt(Day03)
- 焊接工艺技巧与电烙铁使用——经验篇