JVM新生代和老年代配置原则

时间:2024-04-10 16:49:53

JVM新生代和老年代配置原则

新生代配置

1.追求响应时间优先

这种需求下,新生代尽可能设置大一些,并通过实际情况调整新生代大小,直至接近系统的最小响应时间。因为新生代比较大,发生垃圾回收的频率会比较低,响应时间快速。

2.追求吞吐量优先

吞吐量优先的应用,在新生代中的大部分对象都会被回收,所以,新生代尽可能设置大。此时不追求响应时间,垃圾回收可以并行进行。

3.避免设置过小

新生代设置过小,YGC会很频繁,同时,很可能导致对象直接进入老年代中,老年代空间不足发生FullGC。

老年代配置

1.追求响应时间优先

这种情况下,可以使用CMS收集器,以获取最短回收停顿时间,但是其内存分配需要注意,如果设置小了会造成回收频繁并且碎片变多;如果设置大了,回收的时间会很长。所以,最优的方案是根据GClog分析垃圾回收信息,调整内存大小。

2.追求吞吐量优先

吞吐量优先通常需要分配一个大新生代、小老年代,将短期存活的对象在新生代回收掉。