第8课: JVM的young Generation大小对gc性能的致命影响力内幕解密

30 篇文章 1 订阅

内容:

    1.JVM Young Generation工作机制详解
    2.Young Generation对GC的性能的影响

一、VM Young Generation工作机制详解

    1.年轻代和年老代实现算法不同,年轻代GC是有空间的,释放已经占用的空间,年老代GC是没有空间了,是迫不得已,大部分的JVM对象生命周期都不是很长。
    2.整个Heap分为年轻代和年老代,之所以这么分,是GC性能考虑的。提升效率。年轻代进行GC的时候一般都会有新的空间的。年老代进行GC的时候,一般没有更多的空间了。年轻代的GC算法一般采用标记拷贝的算法。Eden中的对象会被移动到S区,这就是一个拷贝的过程。
    3.GC之前,对象是存在Eden和From区域中,GC后,会被拷贝到To区域。From中的对象,算法会考虑其年龄,到达一定阀值会被复制到Old Generation。如果没有到达次数,会被从From复制到To。复制完成后,从新生代的角度讲,To中保存的是有效的对象,Eden和From中剩下的都是无效的对象,这个时候就可以把所有的对象清空。
    4.Eden的内容复制到To,但是To这个时候已经满了,这个时候Eden的对象会被直接复制到Old Generation,From也会如此。对象直接进入Old Generation这种可能是存在的。当然这是不希望看到这种情况。
    5.拷贝完成后,From和To的名字会对调。对调之后,To和Eden是空的。
    6.Old Generation空间不足产生Full GC的三种情况:
        a)From中对象生命值达到阀值,进入Old Generation导致空间不足。
        b)To空间不足,大量的对象直接进入Old Generation导致空间不足。
        c)直接分配的对象是大对象,直接进入Old Generation导致空间不足。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值