内存不足 java se_JavaSE---内存分配

1、普遍的内存分配规则:

1.1、对象优先在Eden分配

a,大多数情况下,对象在新生代Eden分配;

b,当Eden没有足够空间进行分配时,虚拟机发起一次Minor GC;

c,虚拟机  提供了 -XX:+PrintGCDetails (GC日志参数),告诉虚拟机 在发生GC行为时打印内存回收日志,并  在进程退出时输出 当前内存各区域的分配情况;

1.2、大对象直接进入老年代

a,大对象:需要   大量连续内存空间   的java对象(eg:长字符串、数组...);

b,大对象  对  JVM的内存分配来说是一个坏消息;

避免 创建很多  朝生夕灭  的短命大对象;

c,经常出现大对象  容易导致  内存还有不少空间 就提前 触发GC 以获取更足够的连续空间 存储;

d,虚拟机 提供了 -XX:PretenureSizeThreshold(大于这个值的对象直接进入老年代);

避免 在Eden和Survivor之间发生大量内存拷贝;

PretenureSizeThreshold只对Serial、ParNew 收集器 有效;

1.3、长期存活的对象将进入老年代

a,虚拟机 给每个对象 定义了一个  对象年龄计数器;

如果对象在Eden经过第一次Minor GC后仍然存活 且 被Survivor容纳,将被移动到Survivor空间,并设置年龄为1;

对象在Survivor每经历一次Minor GC,年龄增加1;

当对象的年龄增加到 一定程度(默认15岁),被晋升

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值