原创转载请注明出处: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
相关推荐
2. **GC类型**:JVM中的垃圾收集主要有Minor GC、Major GC和Full GC。Minor GC针对新生代,Major GC针对老年代,而Full GC则是对整个堆和方法区进行垃圾回收,是性能影响最大的一种。 3. **触发Full GC的原因**:当...
GC分为Minor GC、Major GC和Full GC三种类型。Minor GC针对新生代,Major GC针对老年代,而Full GC则是对整个堆和方法区的清理,执行时间相对较长。 三、触发Full GC的原因 1. 老年代空间不足:当老年代空间不足以...
Major GC:也叫Full GC,年老代垃圾回收 年轻代和年老代的GC策略是不一样的,年轻代一般采用的是复制算法。 Minor GC和Major GC的发生时机 Minor GC发生Eden区域被占满时。第一次触发gc时,Eden存活的...
2. 老年代GC(Major GC 或 Full GC) 老年代GC处理的是长期存活的对象,使用标记-整理或标记-压缩算法。当老年代空间不足或系统请求Full GC时,会执行此操作。Full GC开销大,应尽量避免频繁触发。 3. 垃圾收集器 ...
老年代则存放长期存活的对象,当其空间不足时,会触发Major GC或Full GC。元空间是Java 8引入的新概念,替代了之前的永久代(PermGen),用于存储类的元数据,如类的加载信息、方法信息等。 G1 GC是Oracle JDK 7...
用于分析 java gc日志文件。根据日志中的CMS GC统计信息可得到Full GC(也可以理解为Major GC)以及Minor GC相关数据
5. **垃圾回收策略**:如Minor GC、Major GC或Full GC,对应的内存区域和策略。 通过这些信息,我们可以识别出是否存在内存泄露、垃圾回收效率低下或者过度频繁等问题。比如,如果发现Full GC过于频繁,可能意味着...
3. **GC活动**:详细记录每一次GC事件,包括Minor GC、Major GC和Full GC,以及它们的耗时,帮助开发者识别是否存在频繁GC或长时间停顿的问题。 4. **线程状态**:展示所有运行中的线程,包括它们的状态(如运行、...
2. 新生代gc(minorgc)和fullgc的区别 新生代gc(minorgc)指发生在新生代的垃圾回收动作,因此Java对象大多数都是具备朝生夕死的特征,所以Minor GC很频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC)...
GC的类型主要有 Minor GC(针对新生代的垃圾收集)、Major GC(针对老年代的垃圾收集)和 Full GC(包括新生代和老年代的全面清理)。不同的GC策略会影响应用的性能,例如,吞吐量优先、响应时间优先或者平衡策略。 ...
3. **GC类型**:主要分为 Minor GC(年轻代GC)、Major GC(老年代GC)和Full GC(全局GC),针对不同区域进行垃圾回收。 4. **GC触发条件**:内存分配达到阈值、手动触发、System.gc()调用等都可能导致GC启动。 5...
1. **GC周期**:新生代和老年代的垃圾清理过程,包括Minor GC和Major GC(或者Full GC)。 2. **暂停时间**(Pause Time):GC操作导致的程序暂停时间,是衡量应用响应速度的重要指标。 3. **吞吐量**(Throughput...
3. **Full GC**:包括Minor GC和Major GC,对整个堆和方法区进行回收。 ### **JVM内存分配担保** 当新生代(Eden + 一个Survivor区)在Minor GC后仍无法容纳存活对象时,这些对象会被晋升到老年代。如果老年代空间...
GC机制可以分为两种类型:普通GC(minor GC)和全局GC(major GC or Full GC)。普通GC只针对年轻代的对象进行回收,而全局GC则是对所有内存区域的回收。 在年轻代中,GC算法采用复制算法(Copying)。复制算法的...
老年代的空间更大,如果老年代也满了,就会触发Major GC或Full GC,这会清理整个堆内存,包括新生代和老年代。 3. **垃圾收集器(Garbage Collector)**:JVM提供了多种垃圾收集器,如Serial GC、Parallel GC、...
2. **Major GC/Full GC**:针对老年代的垃圾收集,通常比Minor GC慢,可能导致长时间的系统暂停。 3. **CMS(Concurrent Mark Sweep)**:并发标记扫描,尽可能减少STW(Stop-The-World)时间,适用于响应时间敏感...
- **GC类型**:主要分为Minor GC(年轻代GC)、Major GC(老年代GC)和Full GC(全局GC)。 - **GC策略**:包括复制算法、标记-清除算法、标记-整理算法、分代收集策略等,根据JVM版本和配置不同而有所不同。 - *...
GC主要包括新生代GC(Minor GC)、老年代GC(Major GC)和全堆GC(Full GC)。 - **新生代GC**:主要针对新生代中的Eden区和两个Survivor区。当Eden区满时,会触发Minor GC,将存活的对象复制到Survivor区,无法...
2. ** Major GC / Full GC**:涉及老年代(Tenured Generation)的垃圾收集,可能涉及到整个堆,速度较慢,应尽量减少其发生。 3. ** CMS(Concurrent Mark Sweep)GC**:并发标记清除,减少STW(Stop-The-World)...