`

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

分享到:
评论

相关推荐

    Jvm1.8_GC.mmap

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

    gcviewer-1.37-SNAPSHOT.jar

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

    java堆内存详解.docx

    GC分为两种: Minor GC、Full GC(也叫做Major GC). Minor GC(简称GC) Minor GC是发生在新生代中的垃圾收集动作, 所采用的是复制算法。 GC一般为堆空间某个区发生了垃圾回收, 新生代(Young)几乎是所有java对象...

    Unsupported major.minor version 51.0

    Unsupported major.minor version 51.0

    一次完整的JVM GC的流程

    一次完整的JVM GC的流程分析,描述了Full GC的原因入口以及Minor GC

    GChisto(专业分析gc日志)

    GChisto是一款专业分析gc日志的工具,可以通过gc日志来分析:Minor GC、full gc的时间、频率等等,通过列表、报表、图表等不同的形式来反应gc的情况。虽然界面略显粗糙,但是功能还是不错的。 配置好本地的jdk环境...

    JVM:GC机制

    Survivor区:当Eden区满之后,MinorGc机制会清理无引用状态的对象,并将GCRoot对象复制到Survivor区其中一个区内 GCRoot:就是指当前仍在直接引用的对象,GCRoot对象所引用的全部对象会形成一个GCRoot链 new对象 ...

    超硬核!!!一篇文章搞定整个JVM的垃圾回收系统

    JVM的垃圾回收机制JVM的垃圾回收机制1 什么是垃圾回收机制2 finalize方法作用3 新生代、老年代、永久代(方法区)的区别3.1 为什么要这样分代:3.2 Minor GC、Major GC、Full GC区别及触发条件4 如何判断对象是否存活...

    Java 中解决Unsupported major.minor version 51.0的问题

    本文主要介绍解决Unsupported major.minor version 51.0的问题,这里给大家整理了详细资料,有需要的小伙伴可以参考下

    启动Tomcat报错Unsupported major.minor version xxx的解决方法

    主要为大家详细介绍了启动Tomcat报错Unsupported major.minor version xxx的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    关于Unsupported major.minor version 49.0的错误解决办法

    主要介绍了关于Unsupported major.minor version 49.0的错误解决办法的相关资料,需要的朋友可以参考下

    前端开源库-minor

    前端开源库-minor次要的语义版本控制工具。对版本应用major、minor和patch。

    version4j:用于帮助比较major.minor.patch版本的库

    版本4j ============= 用于帮助比较major.minor.patch版本的库。 实现标准的Comparable和Comparator接口。用法稳定的: <dependency><groupId>...

    ellfield:使用major、minor、inc和phase绘制椭圆字段-matlab开发

    使用椭圆参数major、minor、inc 和phase 将椭圆区域绘制为线条或补丁。 句法: 手柄 = ELLFIELD(X,Y,MAJOR,MINOR,INC,PHA,VARARGIN) varargin 提供了一些选项,请参阅帮助。 其中之一是可以为每个椭圆使用不同的 z...

    深入了解 JVM 虚拟机(超详细入门攻略)

    JVM虚拟机的详细介绍1. 内存模型以及分区2....11. 简述 java 内存分配与回收策率以及 Minor GC 和Major GC 1. 内存模型以及分区 JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,c

    Rancher部署K8s相关镜像(2)

    version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:...

    MINOR

    MINOR

    JVM大厂高频面试题,连这些都不知道,还敢说自己学过JVM?

    文章目录1. 内存模型以及分区,需要详细...8. Minor GC 与 Full GC 分别在什么时候发生?9. 几种常用的内存调试工具:jmap、jstack、jconsole、jhat10. 类加载的几个过程:11.JVM 内存分哪几个区,每个区的作用是什么?

    iwl-fw-file.rar_Major

    major minor API serial for Linux v2.13.6.

Global site tag (gtag.js) - Google Analytics