JVM基础及基本调优

JVM垃圾回收模型

JVM组成

堆内存

堆内存的结构,主要分为新生代(伊甸园区,Survivor的from区,Survivor的to区),以及老年代。
一、新生代
1.伊甸园区
是大部分对象被创建在此区域。
2.Survivor的from区(随意挑选一个成为from区)
当伊甸园区存满后触发Minor GC,没有被回收的对象将进入该区域等待下次的回收。
3.Survivor的to区
将 Eden 中存活下来的对象和 from 区域的对象,拷贝到这个“to”区域,防止内存碎片化。进一步清理无用对象

二、老年代
放置长生命周期的对象,通常都是从 Survivor 区域拷贝过来的对象。当然,也有特殊情况,我们知道普通的对象会被分配在 TLAB 上;如果对象较大,JVM 会试图直接分配在 Eden 其他位置上;如果对象太大,超过Survivor的50%,完全无法在新生代找到足够长的连续空闲空间,JVM 就会直接分配到老年代。

堆的组成比例

正常来讲的分配是新生代和老年代的比例1:2,
新生代中的伊甸园区,Sursuvivor的from区,Survivor的to区的比例是8:1:1,这一点需要谨记,因为当发生对象过大时触发了内存溢出,除了加大堆内存的容量之外,有时还要估算对象大小,看其是否因为超过了Sursuvivor区的50%而导致直接被存入老年代,使得老年代被占满触发FullGC,当频繁触发FullGC导致STW时,会报出内存溢出异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值