JVM&GC-对象提升规则

JVM

Java

发布日期:   2020-07-18

更新日期:   2020-07-18

文章字数:   518

阅读时长:   1 分

阅读次数:  

前言

虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。

分配原则

  • 对象优先分配在Eden区,如果Eden区,如果Eden区没有足够的空间,虚拟机执行一次Minor GC。
  • 大对象直接进入老年代,这样做的目的是为了避免在Eden区和两个Survivor区之间发生大量的内存拷贝。
  • 长期存活的对象进入老年代。虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。
  • 动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可直接进入老年代。
  • 空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年去的对象的平均大小,如果这个值大于老年去的剩余值大小则进行一次Full GC,如果小于则进入检查HandlePromotionFailure逻辑。判断这个逻辑,如果是True则只进行Minor GC,如果是False则进行Full GC。
    JVM&GC-对象提升规则

文章作者: 少年闰土

文章链接: http://likeyou.cool/2020/07/18/jvm-gc-dui-xiang-ti-sheng-gui-ze/

版权声明: 博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源少年闰土 !

JVM

你的赏识是我前进的动力

JVM&GC-对象提升规则
JVM&GC-对象提升规则

本篇

JVM&GC-对象提升规则 JVM&GC-对象提升规则

前言虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一

2020-07-18 Java

JVM

下一篇 

JVM&GC-对象提升规则 垃圾回收算法(7)-分代回收算法

前言Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ) 又被划分为三个区域:

2020-07-12 Java

JVM

原文 

http://likeyou.cool/2020/07/18/jvm-gc-dui-xiang-ti-sheng-gui-ze/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » JVM&GC-对象提升规则

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址