兼职做网站编辑邢台123式的网站怎么做
2026/5/20 20:24:33 网站建设 项目流程
兼职做网站编辑,邢台123式的网站怎么做,合肥网络公司百家号,网站优化 代码优化核心概念总览 这三种 GC 类型的本质区别在于回收的堆内存区域和触发原因。GC 类型别名回收区域触发原因特点Minor GCYoung GC只回收年轻代 (Eden Survivor)Eden 区空间不足非常频繁#xff0c;速度通常很快#xff0c;使用复制算法Major GCOld GC只回收老年代老年代空间不足…核心概念总览这三种 GC 类型的本质区别在于回收的堆内存区域和触发原因。GC 类型别名回收区域触发原因特点Minor GCYoung GC只回收年轻代(Eden Survivor)Eden 区空间不足非常频繁速度通常很快使用复制算法Major GCOld GC只回收老年代老年代空间不足或达到特定条件通常比 Minor GC 慢但比 Full GC 快取决于具体GC器Full GC-回收整个堆(年轻代 老年代 方法区/元空间)多种原因见下文STW时间最长对性能影响最大应尽量避免1. Minor GC (Young GC)触发时机当JVM 无法在 Eden 区为新创建的对象分配内存时便会触发一次 Minor GC。过程以最常见的复制算法为例标记从 GC Roots 开始标记出 Eden 区和其中一个 Survivor区From Survivor中所有存活的对象。复制清除将所有存活的对象复制到另一个空的 Survivor 区To Survivor。存活对象的年龄Age会加 1。每经历一次 Minor GC 且存活下来年龄就增加 1。如果某个对象的年龄超过阈值默认15可通过-XX:MaxTenuringThreshold设置或者 To Survivor 区空间不足这些对象会被晋升Promotion到老年代。清理直接清空整个 Eden 区和刚才使用的 From Survivor 区。这些区域现在变为空闲状态。特点频繁因为新对象创建和消亡非常快。速度快只处理年轻代大部分对象都是“朝生夕死”需要复制的存活对象很少。会发生 STW (Stop-The-World)但通常停顿时间极短用户无感知。2. Major GC (Old GC)触发时机老年代空间不足。在分代收集器如 CMS中当老年代的使用率达到某个阈值如-XX:CMSInitiatingOccupancyFraction默认92%时触发。在G1 收集器中与之对应的概念是Mixed GC混合收集它不仅回收年轻代也会回收一部分老年代区域。特点老年代的对象存活率通常很高所以标记和清理的过程比 Minor GC 更耗时。“Major GC”这个术语定义比较模糊。有时它特指只清理老年代的 GC如 CMS 的并发收集但有时也有人用它来指代 Full GC。需要根据上下文区分。3. Full GCFull GC 是 JVM 中最重量级的垃圾收集会对整个堆内存和方法区元空间进行清理。触发时机常见原因老年代空间不足尝试进行 Major GC 后空间仍然不足则会触发 Full GC。方法区元空间空间不足。System.gc() 调用建议 JVM 进行 Full GC但 JVM 不一定会执行可通过-XX:DisableExplicitGC禁用此调用。空间分配担保失败在发生 Minor GC 之前JVM 会检查老年代最大可用连续空间是否大于年轻代所有对象总空间。如果大于则说明 Minor GC 是安全的即使所有年轻代对象都晋升老年代也放得下。如果小于JVM 会检查是否设置了-XX:-HandlePromotionFailureJDK 6 Update 24 之后废弃规则变为永远担保。如果担保失败则会先触发一次 Full GC 来腾挪老年代空间然后再进行 Minor GC。堆内存中产生大量内存碎片导致无法为大对象找到足够的连续空间。特点STW 时间最长对应用程序性能影响巨大是调优的主要规避对象。在Serial、Parallel Scavenge等收集器中Full GC 是单线程的效率极低。无论是哪种 GC 器Full GC 都是需要全力避免的情况。它们之间的关系与工作流程一个对象的“一生”和 GC 的关系可以概括为以下流程flowchart TDA[新对象尝试在Eden区分配] -- B{Eden区空间足够?}B – 是 -- C[分配成功]B – 否 -- D[触发Minor GC]D -- E{对象在Minor GC中存活?}E – 否 -- F[被回收]E – 是 -- G[年龄加1, 移入Survivor区]G -- H{对象年龄超过阈值或Survivor空间不足?}H – 否 -- AH – 是 -- I[晋升到老年代]I -- J[老年代对象堆积]J -- K{老年代空间不足?}K – 是 -- L[触发Major GC或Full GC]L -- M{GC后空间足够?}M – 是 -- IM – 否 -- N[抛出OutOfMemoryError]如何监控和排查命令行工具jstat -gc pid查看堆内存各分代容量和GC次数、时间。jstat -gccause pid查看上次GC的原因。GC 日志这是最强大的工具。添加以下JVM参数开启详细日志-XX:PrintGC-XX:PrintGCDetails-XX:PrintGCDateStamps-Xloggc:/path/to/gc.log在日志中PSYoungGen代表 Parallel Scavenge 收集器的年轻代GCMinor GCParOldGen代表老年代GCMajor GCFull GC会明确写出。总结Minor GC日常操作回收年轻代快。Major GC重点关照回收老年代慢。Full GC紧急事故全堆回收非常慢必须避免。优化的核心目标就是减少 Full GC 的发生频率缩短 STW 时间。通过调整堆大小、分代比例、选择合适GC器如G1、ZGC等手段让对象尽可能在 Minor GC 阶段就被清理掉减少不必要的晋升并保证老年代有足够的空间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询