Minor GC、Major GC、Full GC
一、年轻代
年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收。这个垃圾回收叫做Minor GC。年轻代被分为3个部分——Enden区和两个Survivor区。
- 年轻代空间的要点:
- 大多数新建的对象都位于Eden区。
- 当
Eden区被对象填满时,就会执行Minor GC
。并把所有存活下来的对象转移到其中一个survivor区。- Minor GC同样会检查存活下来的对象,并把它们转移到另一个survivor区。这样在一段时间内,总会有一个空的survivor区。
- 经过
多次GC周期后,仍然存活下来的对象会被转移到年老代内存空间。通常这是在年轻代有资格提升到年老代前通过设定年龄阈值(默认15次)来完成的
。
二、 年老代
年老代内存里包含了长期存活的对象和经过多次Minor GC后依然存活下来的对象。
通常会在老年代内存被占满时进行垃圾回收。
三、Major GC
老年代的垃圾收集叫做Major GC,Major GC通常是跟full GC是等价的,收集整个GC堆。Minor GC和Major GC其实就是年轻代GC和年老年GC的俗称。
而在Hotspot VM具体实现的收集器:Serial GC, Parallel GC, CMS, G1 GC中,大致可以对应到某个Young GC和Old GC算法组合。
三、分代GC
针对HotSpot VM的实现,其实GC的准确分类可以分为:
- 分代GC
- Young GC:只收集年轻代的GC
- Old GC:只收集年老代的GC(只有CMS的concurrent collection是这个模式)
- Mixed GC:收集整个young gen以及部分old gen的GC(只有G1有这个模式)
- Full GC:
收集整个堆,包括young gen、old gen、perm gen(如果存在的话)等所有部分的模式。
其实后续的G1的分区收集本质其实还是一个分代收集器
,但是和之前的各类回收器不同,它同时兼顾年轻代和老年代
。分代GC并不收集整个GC堆的模式,而是只专注分代收集
四、何时触发Full GC
当准备要触发一次young GC时,如果发现统计数据说之前young GC的平均晋升大小比目前old gen剩余的空间大,则不会触发young GC而是转为触发full GC
- HotSpot VM的GC里。
除了CMS的concurrent collection(jdk14中已经废除)之外
,其它能收集old gen的GC都会同时收集整个GC堆,包括young gen,所以不需要事先触发一次单独的young GC。
- 或者,如果有perm gen的话,
要在perm gen分配空间但已经没有足够空间时,也要触发一次full GC
。 - 或者System.gc()、heap dump带GC,默认也是触发full GC。
Minor GC、Major GC、Full GC相关推荐
- LevelDB 源码剖析(八)Compaction模块:Minor Compaction、Major Compaction、文件选取、执行流程、垃圾回收
文章目录 结构 Minor Compaction 定义 触发时机 核心要点 Major Compaction 定义 触发时机 Size Compaction Seek Compaction Manua ...
- Minor GC、Major GC和Full GC之间的区别(转)
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章.书籍和演讲来介绍我所做的工作.在整个过程中,经常对 Minor.Major.和 Full GC 事件的使用感到 ...
- 36.JVM内存分哪几个区,每个区的作用是什么、如和判断一个对象是否存活、java垃圾回收机制、垃圾收集的方法有哪些、java类加载过程、类加载机制、双亲委派、Minor GC和Major GC
36.JVM内存分哪几个区,每个区的作用是什么? 37.如和判断一个对象是否存活?(或者GC对象的判定方法) 38.简述java垃圾回收机制? 39.java中垃圾收集的方法有哪些? 40.java类 ...
- JVM学习笔记之-堆,年轻代与老年代,对象分配过程,Minor GC、Major GC、Full GC,堆内存大小与OOM,堆空间分代,内存分配策略,对象分配内存,小结堆空间,逃逸分析,常用调优工具
堆的核心概述 概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.Java堆区在JVM 启动的时候即被创建,其空间大小也就确定了.是JVM管理的最大一块内存空间. 堆内存的大小是可 ...
- 直通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: ...
- 记录JVM中Eden区、Survivor from区和Survivor to区及Minor GC和Major GC的理解
仅做学习笔记 JVM中Eden区.Survivor from区和Survivor to区 本文主要根据<深入理解JVM>中内存回收策略,主要关注如下五个方面: 1:Eden区分配 2:大对 ...
最新文章
- Pycharm 建立工程,包含多个工程目录
- jquery实现截取pc图片_jquery 上传图片自由截取
- socketserver
- 基于springmvc、ajax,后台连接数据库的增删改查
- 单片机小白学步系列(十七) 单片机/计算机系统概述:核心模块
- php两个数组融合,php合并两个数组的方式有哪些
- Docker使用Dockerfile构建简单镜像
- java list分批_Java实用笔记——mybatis批量导入
- 一个小爱好竟然改变了全世界!Linux30年都经历了什么?
- day17 10.jdbc的crud操作
- 9.企业应用架构模式 --- 领域逻辑模式
- 2019测试指南-web应用程序安全测试(二)识别应用程序入口点
- matlab信号建模,Matlab在信号处理中的建模仿真
- c语言程序运行的单词翻译,c语言常见英语词汇带翻译
- c语言实验报告评语大全,c语言实验报告(学生).doc
- 老外用VB6写的Windows驱动备份软件
- (四)keycloak 自定义用户(SPI)开发
- Linux下部署worldPress
- awk 分隔符_awk 命令快速入门
- Javaweb学习第三天,CSS(知识点来自广陵散老师总结)