minor gc 晋升老年代阈值
minor gc 晋升老年代阈值
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java
面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001
在 Java 的垃圾回收中,Minor GC(年轻代垃圾回收)是指针对年轻代(包括 Eden 区和 Survivor 区)的垃圾回收操作。当年轻代空间不足时,会触发 Minor GC 来回收无用对象。
在 Minor GC 中,对象会被分为幸存者和非幸存者两类。幸存者又分为幸存者 0 区和幸存者 1 区。每次 Minor GC 后,仍然存活的对象会被移动到另一个幸存者区,而不会被清理。
老年代(Tenured/Old Generation)是存放长时间存活的对象的区域。为了避免频繁地将对象从年轻代晋升到老年代,JVM 引入了一个阈值来控制对象晋升的条件。这个阈值通常被称为晋升老年代的阈值或晋升年龄阈值(Promotion Threshold/Age Threshold)。
具体的晋升老年代阈值可以根据不同的 JVM 实现和配置进行调整,但一般情况下,对象需要达到一定的年龄才能晋升到老年代。默认情况下,HotSpot 虚拟机中的阈值是 15,即对象在经过 15 次 Minor GC 后才有可能晋升到老年代。
当对象达到晋升老年代的阈值时,它将被晋升到老年代,并且在老年代中继续存活。这样可以保证只有长时间存活的对象才会占用老年代的内存空间,减少了老年代的内存碎片和垃圾回收的频率。
需要注意的是,晋升老年代的阈值是可以通过 JVM 参数进行调整的,如 -XX:MaxTenuringThreshold
参数可以设置晋升老年代的最大阈值。调整晋升老年代阈值的设置应该根据具体应用的内存使用情况和性能需求进行优化。