JVM新生代与老年代区域发生分配担保的前提条件

【条件一】:

[1] Eden区剩余内存空间不足以为新对象分配内存。通过JVM参数:-Xms -Xmx -Xmn限定新生代内存空间分配。

Tip: 

[1] -Xms20m -Xmx20m

参数限定初始化堆内存为20M(即jvm启动时,分配给堆的初始内存大小)和运行期间可允许扩展到的最大堆内存为20M。

如果初始堆内存和最大堆内存一致表示堆内存不能扩展。

[2] -Xmn10m 参数指定新生代内存大小为10M。剩余堆内存10M将分配给老年代用于容纳达到分代年龄的对象或者达到分代对象大小限制的对象或者内存分配担保。

【条件二】:

[1] Survivor区中(Survivor区有两块,可通过-XX:SurvivorRatio=8调整Eden与其中一块在新生代的内存比例)不足以容纳MinorGC后通过复制算法转移到该区域中的对象,即当Eden空间不足时,发生MinorGC,而Survivor区空间不足,将触发分配担保,但不保证担保成功。

Tip:

[1] 实际情况是Eden与Survivor的比例是8:2即4:1,由于只有一块Survivor即From区可用,另一块空闲To等待下一次MinorGC后对象的转移。

【条件三】:

[1] 担保成功与否取决于老年代内存是否足够承担起分配担保的任务,即老年代内存足够将部分内存借出,用于容纳MinorGC触发后未复制转移到Survivor区的对象,如果老年代内存不够,则分配担保失败。抛出OutOfMemory通知。

转载自:https://blog.csdn.net/qq_36187285/article/details/82144696 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值