GC分代: MinorGC MajorGC FullGC Mixed GC

  • MinorGC 也叫新生代GC:发生在新生代的垃圾回收,因为新生代的特点,MinorGC非常频繁,且回收速度比较快,每次回收的量也很大。

    • 注意: 新生代GC是一个形容词

      • 例如,你要打扫一下卧室垃圾,卧室GC是一个形容词,利用什么打扫,用什么方式是另一个问题
    • 新生代GC完成GC,用指定好的垃圾回收器,垃圾回收器会有自己的回收算法
    • 当然,MinorGC的垃圾回收器一定是用复制算法,他没有别的算法的选择
  • MajorGC 也叫老年代GC: 发生在老年代的垃圾回收,也称MajorGC,速度比较慢,相对于MinorGC慢10倍左右。

    • 注意: 老年代GC是一个形容词

      • 例如,你要打扫一下客厅垃圾,客厅GC是一个形容词,利用什么打扫,用什么方式是另一个问题
    • 老年代GC完成GC,用指定好的垃圾回收器,垃圾回收器会有自己的回收算法
    • CMS垃圾回收器主要用标记清除算法,其余的垃圾回收器都是用标记整理算法
      • CMS主要用标记清除算法,因为如果触发FullGC的条件,老年代不会再使用CMS
      • 而是使用单线程的serial old垃圾回收器,使用标记整理算法
  • FullGC (Full:完整):清理整个堆的GC事件,包括新生代、老年代、元空间等,他是GC的后备机制,也是垃圾回收的最后尊严,成败在此一举

    • 注意: FullGC是一个形容词

      • 例如,你要打扫一下整个家,整个家GC是一个形容词,利用什么打扫,用什么方式是另一个问题
    • FullGC完成GC,用指定好的垃圾回收器,会有自己的回收算法
    • 那FullGC用的什么垃圾回收器和算法呢?
    • FullGC都是单线程的serial 垃圾回收器 -> 标记-复制算法 + 标记-整理算法
  • Mixed GC: 清理整个新生代以及部分老年代的GC,只有G1有这个模式

点赞,靓仔

JVM基础 -> GC分代: MinorGC MajorGC FullGC Mixed GC相关推荐

  1. (七)JVM成神路之GC分代篇:分代GC器、CMS收集器及YoungGC、FullGC日志剖析

    引言 在<GC基础篇>中曾谈到过分代以及分区回收的概念,但基础篇更多的是建立在GC的一些算法理论上进行高谈阔论,而本篇则重点会对于分代收集器的实现进行全面详解,其中会涵盖串行收集器.并行收 ...

  2. java8堆内存模型_「GC系列」JVM堆内存分代模型及常见的垃圾回收器

    1. 内存分代模型 为什么要说JVM的内存分代模型呢,因为内存分代和垃圾回收器的运行是有关系的. 现在大部分用到的垃圾回收器在逻辑上是分代的,除了G1之外的其他垃圾回收器在逻辑上和物理上都是分代的. ...

  3. JVM专题之分代模型:年轻代、老年代、永久代

    目录 一 什么是GC 分代 二 GC 为什么需要分代 三 GC 如何分代,每一个代具体是怎么工作的 3.1 年轻代 3.1.1 Eden Space 3.1.2 Survivor 3.2 老年代 3. ...

  4. JVM重点简述—分代收集理论与垃圾收集算法

    一.分代收集理论 设计原则:将java堆划分为不同区域,将回收对象依据年龄分配到不同区域存储.由此产生新生代和老年代的概念,新生代每次手机都会有大批对象死去,存活的少量对象逐步晋升为老年代. 三条假说 ...

  5. (六)JVM成神路之GC基础篇:对象存活判定算法、GC算法、STW、GC种类详解

    引言 经过前面五个章节的分析后,对于JVM的大部分子系统都已阐述完毕,在本文中则开始对JVM的GC子系统进行全面阐述,GC机制也是JVM的重中之重,调优.监控.面试都逃不开的JVM话题. 在前面分析J ...

  6. 26 Java GC算法 垃圾收集器、标记 -清除算法、复制算法、标记-压缩算法、分代收集算法

    26.Java GC算法 垃圾收集器 1.1.1标记 -清除算法 1.1.2复制算法 1.1.3标记-压缩算法 1.1.4分代收集算法 26.Java GC算法 垃圾收集器 概述 垃圾收集 Garba ...

  7. 5、JVM分代模型--新生代 的垃圾回收

    为什么要有JVM分代模型? JVM中的对象生命周期不同,有的对象长期存在,而有的对象朝生夕死,对象生命周期的不同直接导致了进行垃圾回收时存活对象比例不同,而存活对象比例不同就导致需要使用不同的垃圾回收 ...

  8. 一文详解,jvm内存分代与垃圾回收原理

    jvm运行时数据区 Java程序启动后,本质上就是启动一个jvm进程,jvm会将自己管理的内存划分为几个区域,每个区域都有自己的用途.在程序运行时的内存区域主要可以划分为五个,分别是:方法区.堆.虚拟 ...

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

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

最新文章

  1. 7-flutter Navigator 和Route
  2. 连岳读书|这是不让人害怕的数学,课堂上学不到的数学!
  3. 字符串阵列分别输出元素的索引,原值和长度
  4. mask rcnn实例分割_使用Mask-RCNN的实例分割
  5. 机器学习竞赛中,为什么GBDT往往比深度学习更有效?
  6. Nicetools:定一个小目标,先做它个1000个工具
  7. 基于modelsim-SE的简单仿真流程—上
  8. SpringMVC_day1_常用注解
  9. python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...
  10. n160ii打印机查看ip地址_喷墨打印机自动清洁打印头方法你知道几个?
  11. 博客阅读和思考——2018-3-5
  12. 【学习进阶】Java 进阶学习资料《Java 编程思想》第5版 等
  13. java打造手机远程控制电脑之详细教程
  14. MySQL备份的几种常用方法与恢复步骤
  15. 金蝶云星空和钉钉接口打通对接实战
  16. 【算法思路】常见岛屿数量的算法题
  17. nnet3-chain-copy-egs用于chain模型输入数据
  18. 泰拉瑞亚 (Terraria v1.4.1.2) ---PC
  19. JavaScript-原型详解
  20. 压缩脚本linux shell

热门文章

  1. 基于ArrayList实现HashMap代码
  2. java错误: xxx不是抽象的, 并且未覆盖xxx中的抽象方法
  3. 基于Q-learning的无人机三维路径规划(含完整C++代码)
  4. Android开发基础——Android简介
  5. 【数据结构】实现:合并两个升序的单链表,合并之后的链表后依旧有序
  6. 用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法
  7. k8s学习-kubectl命令常用选项详解与实战
  8. 杨守鸿 计算机学院,计算机学院军训师生慰问暨新生见面会顺利举办
  9. 无人机在精准农业中的研究综述
  10. 2020-2-10新生赛