1、先排除代码问题
新生代的大小
-Xmn :
新生代过小,会导致频发的minor GC(垃圾回收时间会变长)。
如果新生代过大,则相应的老年代会变小。这样会导致频繁的full gc(老年代内存紧张会频繁的发生full gc ,full gc 会导致 STW,频繁的full gc 会影响吞吐量。)
新生代的比例问题:
Oracle 建议: 新生代 站 整个堆的 25%~50%
经过实践得知,新生代的内存大小 在临界值以内 越大,吞吐量会越高。如果超过临界值,吞吐量会下降。
新生代能容纳所有【并发量*(请求-响应)】的数据
通过合理的阈值设定,让新生代的对象能够早日晋升到老年代中(因为新生代的gc 时会复制,对于能够晋升到老年代的对象 每次复制,无疑回让效率变慢)