JVM-堆-新生代与老年代-03

存储在JVM中的Java对象可以被划分为两类:

  • 一类是生命周期较短的瞬时对象,这类对象的创建和消亡都非常迅速

    • 生命周期短的,及时回收即可

  • 另外一类对象的生命周期却非常长,在某些极端的情况下还能够与JVM的生命周期保持一致

Java堆区进一步细分的话,可以划分为年轻代(YoungGen)和老年代(oldGen)

其中年轻代又可以划分为Eden空间、Survivor0空间和Survivor1空间(有时也叫做from区、to区)

 下面这参数开发中一般不会调:

  • Eden:From:to -> 8:1:1,但是存在自适应的内存分配策略,实际情况下并不是8:1:1,可以通过  -UseAdaptiveSizePolicy来关闭自适应(+号就是使用,-号就是不用),但虽然官方这么说,实际上即使关闭了,也没有用。只能通过选项“-xx:SurvivorRatio”调整这个空间比例。比如-xx:SurvivorRatio=8,这样可以调成8:1:1。

  • 新生代:老年代 - > 1 : 2

配置新生代与老年代在堆结构的占比。

  • 默认-XX:NewRatio=2,表示新生代占1,老年代占2,新生代占整个堆的1/3

  • 可以修改-XX:NewRatio=4,表示新生代占1,老年代占4,新生代占整个堆的1/5

当发现在整个项目中,生命周期长的对象偏多,那么就可以通过调整 老年代的大小,来进行调优

几乎(有些大的对象在Eden区无法存储时候,将直接进入老年代)所有的Java对象都是在Eden区被new出来的。绝大部分的Java对象的销毁都在新生代进行了。

IBM公司的专门研究表明,新生代中80%的对象都是“朝生夕死”的。

可以使用选项"-Xmn"设置新生代最大内存大小

这个参数一般使用默认值就可以了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值