对象内存分配

1 对象优先在eden 分配

注意Minor GC 和Full GC 区别

新生代GC(Minor GC) :指发生在新生代的垃圾回收动作 ,因为java大多数对象都具有朝生夕灭的特点,所以Minor GC 非常频繁 ,回收效率也比较快
老年代GC(Full GC/Major GC) :指发生在老年代的垃圾回收动作,一旦出现了MajorGC 通常带有一次的MinorGC (但不一定绝对) . MajorGC 一般会比MinorGC快10倍以上

2 大对象直接进入老年代 大对象: 连续内存空间的java对象

例外 :若出现朝生夕灭且大对象的情况, 在新生区采用复制算法收集内存的同时,进入了老年代.那么产生了新老拷贝的情况出现,而虚拟机给了一种可以调节的方法 --XX:PretenureSizeThreshold参数,让大于这个参数的值直接进行老年代,这样就避免在Eden和survivor区直接发生大内存的拷贝

注意:PretenureSizeThreshold参数 只对Serial 和ParNew 两块收集器有效

3长期存活的对象直接进入老年代 那么如何判断这个对象是否长期存活的标准呢? java虚拟机在这里有一定的规则规范 ----对象年龄计数器 当对象每次在Minor GC 存活 , 并能被Survivor容纳的话 对象年龄为1 并且每次在survivor经历一次MinorGC 年龄就加一岁 ,默然到达15岁就直接进入老年代

通过--XX:MaxTenuringThreshold 来进行设置

4 动态年龄的判定

如果在Survivor空间相同年龄所有对象大小总和大于Survivor空间的一半 ,年龄大于或等于就可以直接进行老年代无须等到MaxTenuringThreshold 的值

5空间搭配担保 在发生MinorGC的时候,虚拟机会进行检测 每次晋升到老年代平均大小是否大于老年代的剩余空间大小,如果大于这进行FULLgc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你今天学习了吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值