JVM内存分配规则

JVM内存分配规则

堆内存分配:

JDK8 默认的,新生代(Young)与老年代的比例值为 1:2(该值可以通过参数 -XX:NewRatio来指定)。

新生代分为 Eden和两个Survior区域,分别被命名为from和to,以示区分。

默认的,Eden:from:to = 8:1:1(可以通过参数-XX:SurvivorRatio来设定)。

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;

JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配:

-XX:PermSize 256MB

-XX:MaxPermSize 256MB

JVM使用-XX:PermSize来设置非堆内存初始值,默认是物理内存的 1/64

由-XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4

非堆内存分为

Perm Gen 永久代

JVM Stack Java 虚拟机栈

Local Method Stack 本地方法栈

举个例子

初始设置-Xms=512MB后 JVM内存分布如下所示:

Young 年轻代默认大小大概为 170MB

Tenured 老年代默认大小大概为 340MB

新生代中 Eden的默认大小为 136MB

Survivor区的默认大小为 34MB

To 和 From区的默认大小为 17MB

当Eden区的对象经过15次的MInor GC后晋升到老年代

对象提升(Promotion)规则

1. 对象优先分配在 Eden 区

2. 大对象直接进入老年区

3. 长期存活的对象进入老年代

4. 动态判断对象年龄

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值