佛山网站建设公司排名,wordpress评论 边栏,常州工程交易网,查域名注册今天给大家继续分享MinorGC、MajorGC、FullGC相关知识#xff0c;如有不对的地方欢迎指正#xff01;
1、MinorGC #xff08;新生代垃圾回收#xff09; JDK1.8 堆内部结构
从年轻代空间#xff08;包括 Eden 和 Survivor 区域#xff09;回收内存被称为 Minor GC如有不对的地方欢迎指正
1、MinorGC 新生代垃圾回收 JDK1.8 堆内部结构
从年轻代空间包括 Eden 和 Survivor 区域回收内存被称为 Minor GC也叫Young GC。因为Java对象大多具备朝生夕死的特征所以MinorGC非常频繁一般回收速度也比较快。一般采用复制算法。
说明Minor GC可能会引发STW暂停其他用户的线程需要等JVM垃圾回收结束后用户线程才恢复运行。
Minor GC 触发条件 Eden伊甸园区满了 新new的对象需要分配到新生代的Eden伊甸园区当Eden区的空间不够的时候需要进行MinorGC策略回收
2、Major GC老年代垃圾回收
Major GC指发生在老年代的GC。
Major GC触发条件
老年代空间不足时会先尝试触发Minor GC。Minor GC之后空间还不足则会触发Major GC。
说明发生在老年代的GC 基本上进行一次Major GC 就会伴随进行一次 Minor GC。Major GC 的速度一般会比 Minor GC 慢 10 倍并且STW的时间更长。
3、Full GC 新生代老年代垃圾回收
Full GC可以理解为Major GCMinor GC组合后进行的一整个过程是清理JVM整个堆空间年轻代和老年代空间。
Full GC触发条件 调用System.gc()方法时可通过-XX: DisableExplicitGC 参数来禁止调用System.gc() 当方法区空间不足时 Minor GC后存活的对象大小超过了老年代剩余空间 Minor GC时中Survivor幸存区空间不足时判断是否允许担保失败不允许则触发Full GC。允许并且每次晋升到老年代的对象平均大小老年代最大可用连续内存空间也会触发Full GC CMS GC异常CMS运行期间预留的内存无法满足程序需要就会出现一次“Concurrent Mode Failure”失败会触发Full GC STWStop The World垃圾回收发生过程中会产生应用程序的停顿现象。停顿产生的时候整个应用程序线程都会被暂停有点应用程序像卡死的情况。