Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX
链接:http://www.zhihu.com/question/41922036/answer/93079526
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- Partial GC:并不收集整个GC堆的模式
- Young GC:只收集young gen的GC
- Old GC:只收集old gen的GC。只有CMS的concurrent collection是这个模式
- Mixed GC:收集整个young gen以及部分old gen的GC。只有G1有这个模式
- Full GC:收集整个堆,包括young gen、old gen、perm gen(如果存在的话)等所有部分的模式。
Major GC通常是跟full GC是等价的,收集整个GC堆。但因为HotSpot VM发展了这么多年,外界对各种名词的解读已经完全混乱了,当有人说“major GC”的时候一定要问清楚他想要指的是上面的full GC还是old gen。
最简单的分代式GC策略,按HotSpot VM的serial GC的实现来看,触发条件是:
- young GC:当young gen中的eden区分配满的时候触发。注意young GC中有部分存活对象会晋升到old gen,所以young GC后old gen的占用量通常会有所升高。
- full GC:当准备要触发一次young GC时,如果发现统计数据说之前young GC的平均晋升大小比目前old gen剩余的空间大,则不会触发young GC而是转为触发full GC(因为HotSpot VM的GC里,除了CMS的concurrent collection之外,其它能收集old gen的GC都会同时收集整个GC堆,包括young gen,所以不需要事先触发一次单独的young GC);或者,如果有perm gen的话,要在perm gen分配空间但已经没有足够空间时,也要触发一次full GC;或者System.gc()、heap dump带GC,默认也是触发full GC。
HotSpot VM里其它非并发GC的触发条件复杂一些,不过大致的原理与上面说的其实一样。
当然也总有例外。Parallel Scavenge(-XX:+UseParallelGC)框架下,默认是在要触发full GC前先执行一次young GC,并且两次GC之间能让应用程序稍微运行一小下,以期降低full GC的暂停时间(因为young GC会尽量清理了young gen的死对象,减少了full GC的工作量)。这是HotSpot VM里的奇葩嗯。
并发GC的触发条件就不太一样。以CMS GC为例,它主要是定时去检查old gen的使用量,当使用量超过了触发比例就会启动一次CMS GC,对old gen做并发收集。
Major GC和Full GC的区别是什么?触发条件呢?相关推荐
- minor gc和Major GC,Full GC的触发条件
Minor GC Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操作,当新生代无法为新生对象分配内存空间的时候,会触发Minor GC.因为新生代中大多数 ...
- Minor GC、Major GC和Full GC之间的区别(转)
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章.书籍和演讲来介绍我所做的工作.在整个过程中,经常对 Minor.Major.和 Full GC 事件的使用感到 ...
- Minor GC、Major GC、Full GC
一.年轻代 年轻代是所有新对象产生的地方.当年轻代内存空间被用完时,就会触发垃圾回收.这个垃圾回收叫做Minor GC.年轻代被分为3个部分--Enden区和两个Survivor区. 年轻代空间的要点 ...
- JVM学习笔记之-堆,年轻代与老年代,对象分配过程,Minor GC、Major GC、Full GC,堆内存大小与OOM,堆空间分代,内存分配策略,对象分配内存,小结堆空间,逃逸分析,常用调优工具
堆的核心概述 概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.Java堆区在JVM 启动的时候即被创建,其空间大小也就确定了.是JVM管理的最大一块内存空间. 堆内存的大小是可 ...
- Minor GC,Major GC,Full GC -- hotspot VM GC讲解
针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种: Partial GC:并不收集整个GC堆的模式 Young GC:只收集young gen的GC Old GC:只收集old ge ...
- 直通BAT JVM必考题:Minor GC、Major GC、Full GC的区别
Java面试过程,JVM属于必考题系列: 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置 直通BAT必考题系列:JVM的4种垃圾回收算法.垃圾回收机制与总结 直通BAT必考题系列:7 ...
- Minor GC、Young GC、Old GC、Major GC、Mixed GC、Full GC都是什么?
文章目录 各个GC的概念 1.Minor GC和Young GC 2.Old GC和Major GC 3.Mixed GC 4.Full GC 两个大类partial GC和Full GC: 各个GC ...
- JVM的三种常见GC:Minor GC、Major GC与Full GC
文章目录 JVM的GC JVM GC的种类 GC的触发机制 年轻代GC(Minor GC)触发机制 老年代GC(Major GC/Full GC)触发机制 Full GC触发机制 为什么需要把Java ...
- Minor GC、Major GC与Full GC讲解
Minor GC 介绍 年轻代的垃圾回收,该GC会清理伊甸园区和幸存区. 因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快. Minor GC会引发STW: ...
最新文章
- 【AI】吴恩达斯坦福机器学习中文笔记汇总
- 使用TortoiseGit,设置ssh方式连接git仓库。
- python 框架好学吗-python的flask框架难学吗
- 机器学习入门到进阶学习路线图
- 【Python数据挖掘课程】三.Kmeans聚类代码实现、作业及优化
- xshell vim 不能粘贴_编辑器之神——vim的入门指南
- 深圳当代艺术家的一次聚会
- python+robotframework_python+robot framework接口自动化测试
- C言语教程第四章: 数组(4)
- 自由空间光通信OptiSystem仿真
- 推荐一个完全免费的高质量素材网站
- JavaWeb开发框架——Spring
- 二维码定位算法流程图
- 【按键精灵】N秒内找图函数封装
- 卸载ie里的java_怎么样卸载IE10/IE11 两种方法教你快速卸载IE10/IE11
- 方正飞鸿智能信息平台(Fix ES2007)
- ISO8583报文(一)
- 计算机的两种启动引导方式,硬盘的两种分区和对应启动引导方式
- git错误: The requested URL returned error: 403 Forbidden while accessing https://github.com/wangz/futu
- 小程序扫码在线点餐系统源码开源分享
热门文章
- PDF 翻译神器,再也不担心读不懂英文 Paper 了
- Kitty猫 vs. 百度狗,区块链动物大战,谁将下一个入局?
- openGL之API学习(二一一)glColor遇上纹理
- 计算机进程关闭后又重启,Windows 10电脑关机后又自动重启如何解决
- 对开环系统与闭环系统的初步理解
- 从云监工到云登顶,5G云直播见证中国速度
- Arduino “学生寝室”门禁管理(红外遥控+舵机+无源蜂鸣器+DHT11温湿度传感器+LCD1602+LED灯)
- SpringBoot+Vue前后端分离java高校教材征订订购系统
- 名帖144 行书《兰亭八柱帖》第二册:褚遂良摹兰亭序
- 从BBS上转的 关于职业生涯