徐州网站设计,快速排名网站,外贸开发网站建设,网络服务合同需要缴纳印花税吗目录
新生代和老年代
新生代
MinorGC
老年代#xff08;Old Generation#xff09;
MajorGC
Minor GC、Major GC 和 Full GC
三个GC具体区别和使用场景
JVM GC及内存调优的参数
调优建议 前言-与正文无关
生活远不止眼前的苦劳与奔波#xff0c;它还充满了无…目录
新生代和老年代
新生代
MinorGC
老年代Old Generation
MajorGC
Minor GC、Major GC 和 Full GC
三个GC具体区别和使用场景
JVM GC及内存调优的参数
调优建议 前言-与正文无关
生活远不止眼前的苦劳与奔波它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中我们往往容易陷入工作的漩涡忘记了停下脚步感受周围的世界。让我们一起提醒自己要适时放慢脚步欣赏生活中的每一道风景享受与家人朋友的温馨时光发现那些平凡日子里隐藏的幸福时刻。因为这些点点滴滴汇聚起来的才是构成我们丰富多彩生活的本质。希望每个人都能在繁忙的生活中找到自己的快乐之源不仅仅为了生存而工作更为了更好的生活而生活.
送你张美图希望你开心 新生代和老年代 在Java虚拟机JVM的垃圾回收机制中堆内存被分为几个区域主要包括新生代Young Generation和老年代Old Generation。这种划分主要是基于对象的生命周期。 主要看第二章图上图只是说叫法不同时的样子一个Eden空间和两个幸存者Survivor空间通常称为S0和S1或From和To 新生代
新生代用于存放新创建的对象。大多数情况下Java对象大部分是短命的因此新生代通常较小且频繁进行垃圾回收。 结构新生代通常进一步分为三个区一个Eden空间和两个幸存者Survivor空间通常称为S0和S1或From和To。大部分新创建的对象首先被分配到Eden区。当进行垃圾回收时存活的对象会从Eden区移动到一个Survivor空间而在Survivor空间中已经存活了一段时间的对象最终会被移动到老年代。回收频率新生代的垃圾回收频率较高但每次回收的速度较快这种回收称为Minor GC。
MinorGC
MinorGC 的过程采用复制算法。
首先把 Eden 和 ServivorFrom 区域中存活的对象复制到 ServicorTo 区域如果有对象的年龄以及达到了老年的标准一般是 15则赋值到老年代区同时把这些对象的年龄 1如果 ServicorTo 不够位置了就放到老年区然后清空 Eden 和 ServicorFrom 中的对象最后ServicorTo 和 ServicorFrom 互换原 ServicorTo 成为下一次 GC 时的 ServicorFrom 区。 老年代Old Generation
目的老年代用于存放长时间存活的对象。一些大对象如果在新生代中无法容纳也可能直接被分配到老年代。
回收频率老年代的垃圾回收频率较低但每次回收的时间较长因为它包含的对象通常更多且更难以确定哪些是垃圾。这种回收称为Major GC或Full GC。空间大小老年代的空间通常比新生代大因为它需要存储更长时间存活的对象。 分代垃圾回收的主要优势在于能够根据对象的生命周期采用不同的回收策略从而提高垃圾回收的效率。由于大部分新创建的对象都是朝生夕死新生代采用了适合频繁回收的算法如复制算法。而老年代中的对象生命周期长回收频率低通常采用标记-清除Mark-Sweep或标记-整理Mark-Compact算法以减少垃圾回收对应用性能的影响。
MajorGC
MajorGC 采用标记—清除算法
首先扫描一次所有老年代标记出存活的对象然后回收没有标记的对象。
MajorGC 的耗时比较长因为要扫描再回收。MajorGC 会产生内存碎片为了减少内存损耗我们一般需要进行合并或者标记出来方便下次直接分配。
当老年代也满了装不下的时候就会抛出 OOMOut of Memory异常。 Minor GC、Major GC 和 Full GC
在 Java 虚拟机JVM中垃圾收集GC机制用于自动管理内存回收不再使用的对象。GC 主要分为三类Minor GC、Major GC 和 Full GC。这三类 GC 在工作机制、触发条件和影响上有所不同。下面是对这三类 GC 的详细解释及其区别
Full GC
针对整个堆包括年轻代和老年代和方法区进行垃圾收集。全面扫描和回收整个堆和方法区的对象包括年轻代、老年代和方法区。通常会进行标记、清除和压缩。Full GC涉及整个堆和方法区停顿时间更长。频率更低但对应用性能影响最大应尽量避免频繁 Full GC。 三个GC具体区别和使用场景 Minor GC 目标年轻代Young Generation。触发条件年轻代的 Eden 区满。特点频繁、快速、部分停顿。使用场景适用于高频率创建对象的场景如 web 服务器请求处理。 Major GC 目标老年代Old Generation。触发条件老年代空间不足。特点停顿时间长、回收老年代对象。使用场景当对象在年轻代存活较长时间并晋升到老年代时。 Full GC 目标整个堆年轻代、老年代和方法区。触发条件显式调用 System.gc()、老年代满、方法区满等。特点停顿时间最长、全面回收。使用场景通常应尽量避免频繁触发 Full GC可通过调整内存配置和优化代码来减少 Full GC 的频率。 JVM GC及内存调优的参数
-Xms2g初始化推大小为 2g-Xmx2g堆最大内存为 2g-XX:NewRatio4设置年轻的和老年代的内存比例为 1:4-XX:SurvivorRatio8设置新生代 Eden 和 Survivor 比例为 8:2–XX:UseParNewGC指定使用 ParNew Serial Old 垃圾回收器组合-XX:UseParallelOldGC指定使用 ParNew ParNew Old 垃圾回收器组合-XX:UseConcMarkSweepGC指定使用 CMS Serial Old 垃圾回收器组合-XX:PrintGC开启打印 gc 信息-XX:PrintGCDetails打印 gc 详细信息。
调优建议 减少 Minor GC 影响 增大年轻代的大小减少 Minor GC 的频率。调整年轻代的比例通过 JVM 参数 -Xmn、-XX:NewRatio 等。优化对象创建和使用尽量减少短命对象的创建。 优化 Major GC 和 Full GC 增大老年代的大小减少 Major GC 和 Full GC 的触发频率。选择合适的垃圾收集器如 G1、ZGC、Shenandoah这些收集器设计用于减少停顿时间。调整垃圾收集器参数如 -XX:MaxTenuringThreshold、-XX:InitiatingHeapOccupancyPercent 等。 ------------------------------------------与正文内容无关------------------------------------ 如果觉的文章写对各位读者老爷们有帮助的话麻烦点赞加关注呗作者在这拜谢了!
混口饭吃了如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我本人看到一定马上回复
这是我全部文章所在目录看看是否有你需要的如果遇到觉得不对地方请留言看到后我会查阅进行改正。
A乐神-CSDN博客
关注在文章左上角作者信息处。