700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > minor GC full GC 新生代(young ) 老年代(old)的一些理解

minor GC full GC 新生代(young ) 老年代(old)的一些理解

时间:2019-10-29 00:21:37

相关推荐

minor GC   full GC 新生代(young ) 老年代(old)的一些理解

Minor GC

Minor GC是俗称,新生代(新生代分为一个 Eden区和两个Survivor区)的垃圾收集叫做 Minor GC。 清除 Eden 和 from ,转到to中。接下来from与to转换。继续清除 Eden和新from,转到to。清除一次后存活超过年龄的 ,转到老年代。to到了阈值后,部分对象转到老年代。

晋升老年代参数:XX:+MaxTenuringThreshold

(至于为什么是 15次,原因是 HotSpot会在对象头的中的标记字段里记录年龄,分配到的空间只有4位,所以最多只能记录到15)

另外,如果单个 Survivor 区已经被占用了 50% (对应虚拟机参数:-XX:TargetSurvivorRatio),那么较高复制次数的对象也会被晋升至老年代。

Full GC 就是收集整个堆,包括新生代,老年代,永久代(在JDK 1.8及以后,永久代会被移除,换为metaspace)等收集所有部分的模式。

新生代老年代比例

默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数–XX:NewRatio来指定 ),即:新生代 ( Young ) = 1/3 的堆空间大小。

老年代 ( Old ) = 2/3 的堆空间大小

新生代(young generation)

Eden、survivor(from+to),Eden:From:To=8:1:1( 可以通过参数 –XX:SurvivorRatio 来设定 ),即:Eden = 8/10 的新生代空间大小,From = To = 1/10 的新生代空间大小。 新生对象在Eden和from中,minor gc后,转到to或者老年代。一次minor gc后,from与to角色互转。

新生代实际可用的内存空间为 9/10 ( 即90% )的新生代空间。

来自 /Muyundefeng/article/details/72667863

老年代(old generation):存有大对象或者 超过阈值的对象晋升来。

-XX:PretenureSizeThreshold 参数 ,大于这个数量直接在老年代分配,缺省为0 ,表示绝不会直接分配在老年代

【来自】java堆,新生代,老年代,Eden空间,From Survivor空间,To Survivor空间

堆的内存模型大致为:

默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Young ) = 1/3 的堆空间大小。

老年代 ( Old ) = 2/3 的堆空间大小。其中,新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 to,以示区分。

默认的,Edem : from : to = 8 : 1 : 1 ( 可以通过参数 –XX:SurvivorRatio 来设定 ),即: Eden = 8/10 的新生代空间大小,from = to = 1/10 的新生代空间大小。

JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块 Survivor 区域是空闲着的。

java堆,新生代,老年代,Eden空间,From Survivor空间,To Survivor空间

JVM 系列文章之 Full GC 和 Minor GC

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
Minor GC和Full GC

Minor GC和Full GC

2018-12-23

Full GC 和 Minor GC

Full GC 和 Minor GC

2024-03-13

Minor GC MajorGC Full GC

Minor GC MajorGC Full GC

2024-04-20

Minor GC  Full GC 触发条件

Minor GC Full GC 触发条件

2021-12-09