JVM调优之新生代的gc回收经验

默认:
Eden区:From Space区:To Space区=8x:x:x = 10x = 新生代

一、如果是临时变量多的接口,Eden一般占用可能也多,但是回收也快
  1. 如果From Survivor空间和To Survivor空间不够用,常驻对象就会进入到老年代,这个时候如果Eden区够用,可以适当调大From Survivor空间和To Survivor空间的大小;如果Eden区也占用多,可以适当调大年轻代的内存占用大小;
  2. 如果Survivor空间小了,对象又多,且没被回收,空间又不够,那么久晋升老年代,这种堆的老年代会呈现持续增长的趋态;此时调大Survivor空间大小,还在使用的临时对象会移动到ToSurvivor空间,下一次GC就可以回收掉上次使用,但现在不使用的对象;
  3. 对于新生代控制比较好,gc能完全回收的,老年代占用一般比较少且空间稳定;
  4. 对于虚拟机来说,复制对象的成本要远高于扫描成本,所以,单次MinorGC时间更多取决于GC后存活对象的数量,而非Eden区的大小。因此如果堆中短期对象很多,那么扩容新生代,单次MinorGC时间不会显著增加。
二、如果代码使用了JVM内存缓存,这种一般对象会常驻内存,不太容易被回收掉,很容易对象晋升至老年代,所以老年代的空间要保持够用;
三、调整比例可以先统计看下活跃常驻对象,临时对象的占比;根据程序稳定情况下的GC日志分析出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值