年轻代和年老代分配过大 或 过小

我们都知道 堆内存被分为年轻代 和 年老代 ,默认比例是1:2. 年轻代占1/3.

年轻代 gc使用的算法是 copy算法(速度快,但是会浪费一个survivor内存),年老代使用的是 标记整理算法(速度慢)。基于此,来了解一下年轻代和年老代分配过大 或 过小会有哪些影响。

年轻代过大:

1:会导致生命周期长的对象 长时间在年轻代,在s0和s1之间来回复制,增加复制开销。

2:年轻代过大,那么年老大就会很小,就会频繁出发fullGC. 由于年老代使用的是标记整理算法,本来就会很慢,就导致stw的时间长。而频繁的fullGC 更是会 降低用户体验,常常出现卡顿现象。

年轻代过小:

1:会频繁触发minorGC, 导致一些不常用对象也很快达到进入年老代的年龄(默认15)。这样一来,年老代也会很容易被填满。fullGC的时间会更长

额外话:

大对象直接进入老年代

Minor GC的规则

大对象直接进入老年代

-XX:PretenureSizeThreshold

指定大于该数值的对象直接进入老年代,避免在新生代的Eden和两个Survivor区域来回复制,产生大量内存复制操作。

缺点:只对Serial和ParNew两个新生代收集器有用
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值