`

Minor GC vs Major GC vs Full GC

    博客分类:
  • JVM
 
阅读更多

原创转载请注明出处:https://agilestyle.iteye.com/blog/2440026

 

Minor GC 清理年轻代

Minor GC指新生代GC,即发生在新生代(包括Eden区和Survivor区)的垃圾回收操作,当新生代无法为新生对象分配内存空间的时候,会触发Minor GC。因为新生代中大多数对象的生命周期都很短,所以发生Minor GC的频率很高,虽然它会触发stop-the-world,但是它的回收速度很快。

 

Major GC 清理老年代

Major GC清理Tenured区,用于回收老年代,出现Major GC通常会出现至少一次Minor GC。

 

Full GC  清理整个堆空间—包括年轻代、老年代、元空间

Full GC是针对整个新生代、老生代、元空间(metaspace,java8以上版本取代perm gen)的全局范围的GC。Full GC不等于Major GC,也不等于Minor GC+Major GC,发生Full GC需要看使用了什么垃圾收集器组合,才能解释是什么样的垃圾回收。 

 

Note

不管什么GC,都会发送stop-the-world,区别是发⽣的时间长短。⽽这个时间跟垃圾收集器又有关系,Serial、PartNew、Parallel Scavenge收集器⽆论是串⾏还是并⾏,都会挂起⽤户线程,⽽CMS和G1在并发标记时,是不会挂起⽤户线程的,但其它时候⼀样会挂起⽤户线程,stop the world 的时间相对来说就⼩很多了。

Major GC 在很多参考资料中是等价于 Full GC的,我们也可以发现很多性能监测⼯具中只有Minor GC 和 Full GC。

⼀般情况下,⼀次Full GC将会对年轻代、⽼年代、元空间以及堆外内存进⾏垃圾回收。

触发Full GC的原因有很多:

  • 当年轻代晋升到⽼年代的对象⼤⼩,并⽐⽬前⽼年代剩余的空间⼤⼩还要⼤时,会触发Full GC;
  • 当⽼年代的空间使⽤率超过某阈值时,会触发Full GC;
  • 当元空间不⾜时(JDK1.7永久代不⾜),也会触发Full GC;
  • 当调⽤System.gc()也会安排⼀次Full GC。

 

Reference

https://plumbr.io/blog/garbage-collection/minor-gc-vs-major-gc-vs-full-gc

https://time.geekbang.org/column/article/109201

分享到:
评论

相关推荐

    jvm-full-gc调优-jvm-full-gc.zip

    2. **GC类型**:JVM中的垃圾收集主要有Minor GC、Major GC和Full GC。Minor GC针对新生代,Major GC针对老年代,而Full GC则是对整个堆和方法区进行垃圾回收,是性能影响最大的一种。 3. **触发Full GC的原因**:当...

    jvm-full-gc.zip

    GC分为Minor GC、Major GC和Full GC三种类型。Minor GC针对新生代,Major GC针对老年代,而Full GC则是对整个堆和方法区的清理,执行时间相对较长。 三、触发Full GC的原因 1. 老年代空间不足:当老年代空间不足以...

    Jvm1.8_GC.mmap

    Major GC:也叫Full GC,年老代垃圾回收 年轻代和年老代的GC策略是不一样的,年轻代一般采用的是复制算法。 Minor GC和Major GC的发生时机 Minor GC发生Eden区域被占满时。第一次触发gc时,Eden存活的...

    jvm 参数及gc详解

    2. 老年代GC(Major GC 或 Full GC) 老年代GC处理的是长期存活的对象,使用标记-整理或标记-压缩算法。当老年代空间不足或系统请求Full GC时,会执行此操作。Full GC开销大,应尽量避免频繁触发。 3. 垃圾收集器 ...

    深入理解JVM&G1; GC

    老年代则存放长期存活的对象,当其空间不足时,会触发Major GC或Full GC。元空间是Java 8引入的新概念,替代了之前的永久代(PermGen),用于存储类的元数据,如类的加载信息、方法信息等。 G1 GC是Oracle JDK 7...

    gcviewer-1.37-SNAPSHOT.jar

    用于分析 java gc日志文件。根据日志中的CMS GC统计信息可得到Full GC(也可以理解为Major GC)以及Minor GC相关数据

    gclog+gcviewer.zip

    5. **垃圾回收策略**:如Minor GC、Major GC或Full GC,对应的内存区域和策略。 通过这些信息,我们可以识别出是否存在内存泄露、垃圾回收效率低下或者过度频繁等问题。比如,如果发现Full GC过于频繁,可能意味着...

    Visual GC(监控垃圾回收器)

    3. **GC活动**:详细记录每一次GC事件,包括Minor GC、Major GC和Full GC,以及它们的耗时,帮助开发者识别是否存在频繁GC或长时间停顿的问题。 4. **线程状态**:展示所有运行中的线程,包括它们的状态(如运行、...

    09.内存分配与回收策略1

    2. 新生代gc(minorgc)和fullgc的区别 新生代gc(minorgc)指发生在新生代的垃圾回收动作,因此Java对象大多数都是具备朝生夕死的特征,所以Minor GC很频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC)...

    gc回收机制

    GC的类型主要有 Minor GC(针对新生代的垃圾收集)、Major GC(针对老年代的垃圾收集)和 Full GC(包括新生代和老年代的全面清理)。不同的GC策略会影响应用的性能,例如,吞吐量优先、响应时间优先或者平衡策略。 ...

    JVM、GC详解及调优

    3. **GC类型**:主要分为 Minor GC(年轻代GC)、Major GC(老年代GC)和Full GC(全局GC),针对不同区域进行垃圾回收。 4. **GC触发条件**:内存分配达到阈值、手动触发、System.gc()调用等都可能导致GC启动。 5...

    GCViewer.zip

    1. **GC周期**:新生代和老年代的垃圾清理过程,包括Minor GC和Major GC(或者Full GC)。 2. **暂停时间**(Pause Time):GC操作导致的程序暂停时间,是衡量应用响应速度的重要指标。 3. **吞吐量**(Throughput...

    第6节: GC垃圾回收-02

    3. **Full GC**:包括Minor GC和Major GC,对整个堆和方法区进行回收。 ### **JVM内存分配担保** 当新生代(Eden + 一个Survivor区)在Minor GC后仍无法容纳存活对象时,这些对象会被晋升到老年代。如果老年代空间...

    Java垃圾回收GC机制

    GC机制可以分为两种类型:普通GC(minor GC)和全局GC(major GC or Full GC)。普通GC只针对年轻代的对象进行回收,而全局GC则是对所有内存区域的回收。 在年轻代中,GC算法采用复制算法(Copying)。复制算法的...

    jvm gc

    老年代的空间更大,如果老年代也满了,就会触发Major GC或Full GC,这会清理整个堆内存,包括新生代和老年代。 3. **垃圾收集器(Garbage Collector)**:JVM提供了多种垃圾收集器,如Serial GC、Parallel GC、...

    深入JVM内核—原理、诊断与优化视频教程-4.GC算法与种类

    2. **Major GC/Full GC**:针对老年代的垃圾收集,通常比Minor GC慢,可能导致长时间的系统暂停。 3. **CMS(Concurrent Mark Sweep)**:并发标记扫描,尽可能减少STW(Stop-The-World)时间,适用于响应时间敏感...

    Java 内存区域和GC机制

    - **GC类型**:主要分为Minor GC(年轻代GC)、Major GC(老年代GC)和Full GC(全局GC)。 - **GC策略**:包括复制算法、标记-清除算法、标记-整理算法、分代收集策略等,根据JVM版本和配置不同而有所不同。 - *...

    思维导图-详细了解JVM和GC过程

    GC主要包括新生代GC(Minor GC)、老年代GC(Major GC)和全堆GC(Full GC)。 - **新生代GC**:主要针对新生代中的Eden区和两个Survivor区。当Eden区满时,会触发Minor GC,将存活的对象复制到Survivor区,无法...

    JVM、GC详解及调优_jvm_JVM、GC详解及调优_

    2. ** Major GC / Full GC**:涉及老年代(Tenured Generation)的垃圾收集,可能涉及到整个堆,速度较慢,应尽量减少其发生。 3. ** CMS(Concurrent Mark Sweep)GC**:并发标记清除,减少STW(Stop-The-World)...

Global site tag (gtag.js) - Google Analytics