JVM在进行Gc时,并非每次都对新生代、老年代、方法区一起回收的,大部分时候回收的都是指新生代。

概述

针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)

  1. 部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:
    1)新生代收集(Minor GC / Young Gc):只是新生代的垃圾收集
    2)老年代收集(Major Gc / old GC):只是老年代的垃圾收集。
    目前,只有CMS GC会有单独收集老年代的行为。
    注意,很多时候Major Gc会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收。|
    3)混合收集(Mixed Gc):收集整个新生代以及部分老年代的垃圾收集。
    目前,只有G1 Gc会有这种行为
  2. 整堆收集(Ful1 GC):收集整个java堆和方法区的垃圾收集。

触发条件

年轻代GC(Minor GC)触发机制:

当年轻代空间不足时,就会触发Minor Gc,这里的年轻代满指的是
Eden代满,Survivor满不会引发GC。(每次 Minor GC会清理年轻代的内存。)
因为Java对象大多都具备朝生夕灭的特性,所以 Minor GC非常频
繁,一般回收速度也比较快。这一定义既清晰又易于理解。
Minor GC会引发STW,暂停其它用户的线程,等垃圾回收结束,用户线程才恢复运行。

老年代GC (Major GC/Full GC)触发机制:

1)指发生在老年代的Gc,对象从老年代消失时,我们说“Major GC”或“Full GC”发生了。
2)出现了Major GC,经常会伴随至少一次的Minor Gc(但非绝对的,在Parallelscavenge收集器的收集策略里就有直接进行Major GC的策略选择过程)。
也就是在老年代空间不足时,会先尝试触发Minor Gc。如果之后空间还不足,则触发Major GC
3)Major GC的速度一般会比Minor GC慢10倍以上,STW的时间更长。
4)如果Major GC后,内存还不足,就报OOM了。

Fu11 GC触发机制:(后面细讲)触发Full 6C执行的情况有如下五种:

(1)调用system.gc()时,系统建议执行Full Gc,但是不必然执行
(2)老年代空间不足
(3)方法区空间不足
(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存
(5)由Eden区、 survivor spacee (From Space)区向survivor space1 (Tospace)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小

说明: full gc是开发或调优中尽量要避免的。这样暂时时间会短一些。

关于触发条件的原理可以通过JVM (五)垃圾回收总结:内存分配一文得到答案

Minor GC、Major GC、Full GC的区别相关推荐

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

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

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

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

  3. young GC和Full GC的区别、什么时候触发young gc和Full GC、如何优化GC

    young GC 和 Full GC 的含义及区别? young GC(新生代GC):指发生在新生代的垃圾收集动作,新生代中的对象朝生夕死,所以 Minor GC 非常频繁,回收速度也比较快. Ful ...

  4. gc垃圾收集器 与gc算法_GC解释:收集器概述

    gc垃圾收集器 与gc算法 当前版本的HotSpot JVM包括三种类型的垃圾收集器: –串行收集器 –并行收集器 –多数同时收集者 它们都是世代的,这意味着它们利用了堆的划分方式 . 垃圾收集器负责 ...

  5. 4. GC 算法(实现篇) - GC参考手册

    您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册 学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算 ...

  6. java gc 时间_Java GC日志查看,GC日志时间分析

    Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...

  7. JVM内功心法-GC垃圾回收之GC垃圾回收过程

    JVM内功心法-GC垃圾回收之GC垃圾回收算法 GC 全称garbagecollection,垃圾回收.JAVA 为了屏蔽操作系统和平台之间的差异.选择的是采用 java 虚拟机来运行 java 应用 ...

  8. full gc JAVA_java触发full gc的几种情况概述

    前言 近期被问及这个问题,在此记录整理一下. System.gc()方法的调用 此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full ...

  9. Java无法输出gc日志_【GC分析】Java GC日志查看

    Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...

  10. 分析解决11gR2 双节点RAC环境下的gc cr block busy/gc buffer busy acquire等待

    ?  系统环境 两节点的RAC:AIX6.1+Oracle 11.2.0.3.3 ?  AWR里展示出来的各种症状(数据来自实例2) 虽然应用没有报障,但AWR报告里的各种迹象已经很明显了 (1)   ...

最新文章

  1. 修改jar中的class文件
  2. LeetCode Wiggle Subsequence(动态规划)
  3. C# 系统应用之使用Pancel控件同一窗体切换页面
  4. 乌龟跑步(记忆化搜索)
  5. 力扣-二叉树的层序遍历
  6. YYAsyncLayer 源码剖析:异步绘制
  7. Android开发学习之路-带文字的图片分享
  8. symantec backup exec 2010 oracle 12,Symantec Backup Exec 2010在Windows平台下Oracle备份详细配置步骤...
  9. CNN卷积神经网络原理讲解+图片识别应用(附源码)
  10. HTTP 多处理模块(MPM)
  11. 关于安卓开发的一些你必须要掌握的网络知识(一):网络基础与网络框架OkHttp
  12. 解决u盘不能格式化的问题
  13. Struts2中XXX.Action类中方法的访问(三种方式)
  14. 【unity-Max】A polygon of Mesh ‘XXX‘ in Assets/XXX/XXX.FBX is self-intersecting and has been discarded
  15. Navicat for Oracle配置
  16. 设计一个不浪费水的热水器
  17. 数据库查询速度优化技巧及解决方案
  18. 无线流媒体网关参数(浙江)
  19. python二级考试怎么报名_计算机二级考试报名流程有哪些
  20. REMOTE_LOGIN_PASSWORDFILE参数和ORAPW密码文件

热门文章

  1. 通讯中断 pc_酒店通讯设备|酒店对讲机应该具备哪些功能
  2. 彻底解决Niushop单商户v4升级v5遇到的各种bug问题这是精粹总结,希望各位少走弯路
  3. 应届生自学Python两个月,为什么找不到工作?
  4. MSSQL SERVER中易混淆的数据类型
  5. verilog 实现8位无符号除法器
  6. 使用fabricjs制作一个diy明信片功能
  7. RabbitMQ学习文档(详细)
  8. R语言:商业数据分析实例(2)【k-means, t-test】
  9. ZCMU 1311: 数字整除
  10. IOS 股票K线图的实现