淘宝建设网站的好处,深圳网站建设售后服务怎样,wordpress增加导航栏,liunix下搭建wordpressJVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区
1.1 具体分区 Java虚拟机#xff08;JVM#…JVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区
1.1 具体分区 Java虚拟机JVM的内存模型主要分为两个大区新生代Young Generation和老年代Old Generation。新生代进一步细分为三个区域Eden区、Survivor区而Survivor区又分为From Survior区S0和To Survior区S1。 1.2 JVM内存分区的必要性 分代收集算法是JVM垃圾回收的核心策略之一它将堆内存划分为几个不同的区域以便更有效地管理不同生命周期的对象。 分代收集算法的优势这种策略能够保证高速的读写操作同时保持内存的连续性。内存分区的目的通过分区可以针对不同类型的对象采取不同的回收策略提高垃圾回收的效率。
2. 垃圾回收
2.1 CMS垃圾回收器
分代CMSConcurrent Mark Sweep垃圾回收器将堆内存分为新生代、老年代和永久代Java 8后改为元空间Metaspace。工作流程 初始标记一个短暂的停止-the-world过程标记所有从根可达的老年代对象。并发标记与应用程序线程并发执行继续标记所有可达对象。重新标记再次停止-the-world修正并发标记阶段的变化。并发清理与应用程序线程并发执行清理已标记为死亡的对象。 适用场景 CMS适用于对响应时间要求较高的系统因为它试图减少垃圾回收对应用程序的影响但可能会产生较多的内存碎片。
2.2 G1垃圾回收器
分代G1Garbage-First垃圾回收器将堆内存划分为多个Region这些Region可以是新生代或老年代。工作流程 混合收集初始阶段G1执行一个类似于CMS的混合收集清理新生代和老年代。标记阶段使用Region-based的标记算法识别所有可达对象。预备阶段G1计算每个Region的垃圾回收价值GC Value并决定回收哪些Region以及回收多少内存。回收阶段G1并发地回收选定的Region分段进行不会影响应用程序的吞吐量。 适用场景 G1适用于多核处理器旨在提供高吞吐量和低延迟同时减少内存碎片。
2.3 JVM垃圾回收从新生代到老年代
对象创建程序启动时在Eden区创建大量临时对象。Eden区满当Eden区空间不足时通过可达性算法标记所有从根可达的对象将它们放入S0区清空Eden区。复制/清除Eden区再次满时将S0和S1交换角色通过复制/清除算法将数据复制到S0区。对象晋升如果对象在新生代经历了预设的年龄阈值如15次Minor GC后仍然存活它会被晋升到老年代。Survivor空间不足如果Survivor空间不足以容纳存活对象一些存活时间较长的对象可能会直接晋升到老年代。大对象如果一个数组或对象的大小超过了新生代的最大容量它将直接在老年代分配。特定对象某些特定对象如使用Finalize方法的对象可能会被设置为总是直接进入老年代。