Minor GC、Major GC、Full GC的区别 您所在的位置:网站首页 阳台栏板高度标准尺寸 Minor GC、Major GC、Full GC的区别

Minor GC、Major GC、Full GC的区别

2023-10-31 19:54| 来源: 网络整理| 查看: 265

今天主要谈谈JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC,之间有什么区别和联系。

Minor GC

JVM堆内存被分为两部分:年轻代(Young Generation)和老年代(Old Generation)。

1.年轻代

年轻代是所有新对象产生的地方,当年轻代内存空间被用完时,就会触发垃圾回收,这个垃圾回收叫做Minor GC。

年轻代被分为3个部分——Enden区和两个Survivor区,年轻代空间的要点:

大多数新建的对象都位于Eden区。当Eden区被对象填满时,就会执行Minor GC。并把所有存活下来的对象转移到其中一个survivor区。Minor GC同样会检查存活下来的对象,并把它们转移到另一个survivor区。这样在一段时间内,总会有一个空的survivor区。经过多次GC周期后,仍然存活下来的对象会被转移到年老代内存空间。通常这是在年轻代有资格提升到年老代前通过设定年龄阈值来完成的。

2.年老代

年老代内存里包含了长期存活的对象和经过多次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的准确分类可以分为:

分代GCFull GC

以及后续的G1的分区收集本质其实还是一个分代收集器,但是和之前的各类回收器不同,它同时兼顾年轻代和老年代。

分代GC并不收集整个GC堆的模式,而是只专注分代收集

Young GC:只收集年轻代的GCOld GC:只收集年老代的GC(只有CMS的concurrent collection是这个模式)Mixed GC:收集整个young gen以及部分old gen的GC(只有G1有这个模式)Full GC

Full GC定义是相对明确的,就是针对整个新生代、老生代、元空间(metaspace,java8以上版本取代perm gen)的全局范围的GC。

以上就是Minor GC、Major GC、Full GC的一个介绍,后续我们再重点介绍JVM GC相关的垃圾回收算法以及底层的实现。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有