Minor GC、Major GC、Full GC的区别
JVM在进行Gc时,并非每次都对新生代、老年代、方法区一起回收的,大部分时候回收的都是指新生代。
概述
针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)
- 部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:
1)新生代收集(Minor GC / Young Gc):只是新生代的垃圾收集
2)老年代收集(Major Gc / old GC):只是老年代的垃圾收集。
目前,只有CMS GC会有单独收集老年代的行为。
注意,很多时候Major Gc会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收。|
3)混合收集(Mixed Gc):收集整个新生代以及部分老年代的垃圾收集。
目前,只有G1 Gc会有这种行为 - 整堆收集(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的区别相关推荐
- GC之Minor/Young/Major GC的区别
2019独角兽企业重金招聘Python工程师标准>>> 我们平时提及Minor GC.Young GC.Major GC,它们之间的关系是怎样的呢? 如下图1所示,一图胜千言,这是J ...
- Minor GC,Major GC,Full GC -- hotspot VM GC讲解
针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种: Partial GC:并不收集整个GC堆的模式 Young GC:只收集young gen的GC Old GC:只收集old ge ...
- young GC和Full GC的区别、什么时候触发young gc和Full GC、如何优化GC
young GC 和 Full GC 的含义及区别? young GC(新生代GC):指发生在新生代的垃圾收集动作,新生代中的对象朝生夕死,所以 Minor GC 非常频繁,回收速度也比较快. Ful ...
- gc垃圾收集器 与gc算法_GC解释:收集器概述
gc垃圾收集器 与gc算法 当前版本的HotSpot JVM包括三种类型的垃圾收集器: –串行收集器 –并行收集器 –多数同时收集者 它们都是世代的,这意味着它们利用了堆的划分方式 . 垃圾收集器负责 ...
- 4. GC 算法(实现篇) - GC参考手册
您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册 学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算 ...
- java gc 时间_Java GC日志查看,GC日志时间分析
Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...
- JVM内功心法-GC垃圾回收之GC垃圾回收过程
JVM内功心法-GC垃圾回收之GC垃圾回收算法 GC 全称garbagecollection,垃圾回收.JAVA 为了屏蔽操作系统和平台之间的差异.选择的是采用 java 虚拟机来运行 java 应用 ...
- full gc JAVA_java触发full gc的几种情况概述
前言 近期被问及这个问题,在此记录整理一下. System.gc()方法的调用 此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full ...
- Java无法输出gc日志_【GC分析】Java GC日志查看
Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...
- 分析解决11gR2 双节点RAC环境下的gc cr block busy/gc buffer busy acquire等待
? 系统环境 两节点的RAC:AIX6.1+Oracle 11.2.0.3.3 ? AWR里展示出来的各种症状(数据来自实例2) 虽然应用没有报障,但AWR报告里的各种迹象已经很明显了 (1) ...
最新文章
- 修改jar中的class文件
- LeetCode Wiggle Subsequence(动态规划)
- C# 系统应用之使用Pancel控件同一窗体切换页面
- 乌龟跑步(记忆化搜索)
- 力扣-二叉树的层序遍历
- YYAsyncLayer 源码剖析:异步绘制
- Android开发学习之路-带文字的图片分享
- symantec backup exec 2010 oracle 12,Symantec Backup Exec 2010在Windows平台下Oracle备份详细配置步骤...
- CNN卷积神经网络原理讲解+图片识别应用(附源码)
- HTTP 多处理模块(MPM)
- 关于安卓开发的一些你必须要掌握的网络知识(一):网络基础与网络框架OkHttp
- 解决u盘不能格式化的问题
- Struts2中XXX.Action类中方法的访问(三种方式)
- 【unity-Max】A polygon of Mesh ‘XXX‘ in Assets/XXX/XXX.FBX is self-intersecting and has been discarded
- Navicat for Oracle配置
- 设计一个不浪费水的热水器
- 数据库查询速度优化技巧及解决方案
- 无线流媒体网关参数(浙江)
- python二级考试怎么报名_计算机二级考试报名流程有哪些
- REMOTE_LOGIN_PASSWORDFILE参数和ORAPW密码文件