GC 调优的核心思路就是尽可能的使对象在年轻代被回收,减少对象进入老年代。
具体调优还是得看场景根据 GC 日志具体分析,常见的需要关注的指标是 Young GC 和 Full GC 触发频率、原因、晋升的速率、老年代内存占用量等等。
比如发现频繁会产生 Ful GC,分析日志之后发现没有内存泄漏,只有 Young GC 之后会有大量的对象进入老年代,然后最终触发 FulGC。所以就能得知是 Survivor 空间设置太小,导致对象过早进入老年代因此调大 Survivor。
或者是晋升年龄设置的太小,也有可能分析日志之后发现是内存泄漏、或者有第三方类库调用了System.gc 等等。
反正具体场景具体分析,核心思想就是尽量在新生代把对象给回收了。