JVM堆中的内存分配策略

首先堆中分为新生区(Young Generation Space)老年区(Tenure generation space)新生区又分为伊甸区(Eden Space)幸存者区(Survivor Space)幸存者区又分为幸存者from区幸存者to区
在这里插入图片描述
当一个对象被new出来的时候首先被分配到伊甸区,如果伊甸区内存满了就会触发一次Minor GC,进行一次垃圾回收,然后把还存活的对象移动到幸存者to区,并将这个对象的年龄设置为1,再把幸存者from区中存活的对象移动到幸存者to区,将这些对象的年龄加1(一旦对象的年龄超过15,那么这个对象就会被转移到老年区),然后将from区中的对象清除,将to区和from区互换(to区变成from区,from区变成to区),然后如果老年区也满了,就会触发一个 Full GC,来清理整个堆中的空间。(大对象new的时候直接被分配到老年区)

Minor GC的触发条件:

  • new对象的时候伊甸区空间不足

Full GC的触发条件:

  1. 老年区空间不足
  2. 方法区空间不足
  3. 调用System.gc()的时候会建议JVM执行Full GC但是不一定执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值