0
点赞
收藏
分享

微信扫一扫

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

GhostInMatrix 2022-01-21 阅读 82

存储在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对象的销毁都在新生代进行了。

 

 

举报

相关推荐

0 条评论