年老代过大有什么影响

jvm系列

年老代大部分是活着的对象,那么年老代过大,或者对象过早提升到年老代,导致年老代存活对象过多,那么如果做一次FullGC,寻找活着的对象,那么对于性能可想而知。

如果系统频繁地发生FullGC的话,而这些或者的对象在这么短的时间内被注销的概率很低,那么FullGC的时间越长,就会有越多的请求得不到响应或者响应很慢,它们所持有的内存就无法释放掉,就会有越多的对象进入Old区域,这就会在一个点上产生连锁效应。

old区不想young区有survivor空间专门存放存活的对象,因而,old区域的对象的清除操作需要在自己的空间内扫描遍历,然后将对应的垃圾对象清除掉,这个时间开销自然是比较大的,虽然可以并行,但是并行之中又带来了很多冲突的复杂性,因而FullGC一直都不是我们想看到的。

清除操作会导致内存产生很多碎片,如果碎片很多的话,在大对象分配上面会出现一些麻烦的问题,因而需要整理碎片,如果存活对象过多的话,那么对于内存碎片整理来说,就越麻烦,有时候可能就为了几个字节的碎片而导致几百M内存对象的移动(JVM不会因为因为这里有几个字节的碎片,而寻找一个几个字节大小的对象放在这个位置,它采用的是顺序移动的方式)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值