默认:
Eden区:From Space区:To Space区=8x:x:x = 10x = 新生代
一、如果是临时变量多的接口,Eden一般占用可能也多,但是回收也快
- 如果From Survivor空间和To Survivor空间不够用,常驻对象就会进入到老年代,这个时候如果Eden区够用,可以适当调大From Survivor空间和To Survivor空间的大小;如果Eden区也占用多,可以适当调大年轻代的内存占用大小;
- 如果Survivor空间小了,对象又多,且没被回收,空间又不够,那么久晋升老年代,这种堆的老年代会呈现持续增长的趋态;此时调大Survivor空间大小,还在使用的临时对象会移动到ToSurvivor空间,下一次GC就可以回收掉上次使用,但现在不使用的对象;
- 对于新生代控制比较好,gc能完全回收的,老年代占用一般比较少且空间稳定;
- 对于虚拟机来说,复制对象的成本要远高于扫描成本,所以,单次MinorGC时间更多取决于GC后存活对象的数量,而非Eden区的大小。因此如果堆中短期对象很多,那么扩容新生代,单次MinorGC时间不会显著增加。