`
heiliguai
  • 浏览: 14448 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

为什么major gc要比minor gc慢很多

    博客分类:
  • jvm
 
阅读更多

能想到的原因有两个:

 

1. major gc使用的算法复杂度比minor gc高;

major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。

 

2.major gc要处理的对象要比minor gc的多。

新生代分配的对象大都是朝生夕死的,所以存活下来要复制的对象也不是很多。老年代里的对象都是大概率存活的,要整理数量就多。

现在内存那么便宜,老年代不用整理算法也换成复制算法,会不会更快一些。可能也是快不了多少的,因为主要原因还是老年代的存活的对象多。

分享到:
评论

相关推荐

    Jvm1.8_GC.mmap

    GC:Gabage Collection,指JVM堆内存区域的垃圾回收 Minor GC:年轻代垃圾回收,所有的Majar GC都会触发进程暂停,只是这...Major GC发生在Old Generation区域被占满时,Major GC与Minor GC算法不同,相对要慢很多。

    gcviewer-1.37-SNAPSHOT.jar

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

    visualGC.zip

    通过观察GC活动,我们可以发现可能的性能瓶颈,例如频繁的Minor GC或Major GC可能导致应用暂停时间过长。 其次,VisualGC还能够记录和显示GC事件的历史数据,包括每次GC的时间、类型以及回收的对象数量。这些信息有...

    深入理解JVM&G1; GC

    当Eden区满时,会触发Minor GC,将存活对象晋升到Survivor区,经过多次Minor GC后仍然存活的对象会被转移到老年代。老年代则存放长期存活的对象,当其空间不足时,会触发Major GC或Full GC。元空间是Java 8引入的新...

    jvm 参数及gc详解

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

    Visual GC(监控垃圾回收器)

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

    gclog+gcviewer.zip

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

    JVM、GC详解及调优

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

    gc回收机制

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

    jvm gc

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

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

    它将内存划分为多个区域,并尝试平衡GC和应用的执行。 9. **监控与诊断工具**:JConsole、VisualVM、JFR(Java Flight Recorder)和JMX(Java Management Extensions)可以帮助我们监控JVM状态,分析GC日志,找出...

    Java 内存区域和GC机制

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

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

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

    Java垃圾回收GC机制

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

    jvm-full-gc.zip

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

    com-sun-tools-visualvm-modules-visualgc.nbm.zip

    通过此插件,我们可以实时监控JVM的垃圾回收过程,包括新生代、老年代的内存分配和回收情况,以及Minor GC和Major GC的执行频率和耗时。这对于诊断和优化内存泄漏、调整内存分配策略、提升系统性能有着极大的帮助。 ...

    JVM_GC_-调优总结.pdf

    ### JVM_GC_调优总结 #### 一、GC(Garbage Collection)概述 **1.1 GC的概念** - **定义**: GC(Garbage Collection),即垃圾收集器,用于跟踪内存中的对象,并自动回收那些不再被其他对象引用的对象,释放这...

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

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

    JVM_GC调优

    - 新创建的对象首先在Eden空间分配,经过一次或多次GC后仍然存活的对象会被转移到Survivor空间或老年代。 - 这种设计基于观察结果:大多数对象很快就会死亡,只有少数会长期存活。 2. **GC类型** - Minor GC:...

Global site tag (gtag.js) - Google Analytics