GC 調優的核心思路就是盡可能的使對象在年輕代被回收,減少對象進入老年代。
具體調優還是得看場景根據 GC 日志具體分析,常見的需要關注的指標是 Young GC 和 Full GC 觸發頻率、原因、晉升的速率、老年代內存占用量等等。
比如發現頻繁會產生 Ful GC,分析日志之后發現沒有內存泄漏,只有 Young GC 之后會有大量的對象進入老年代,然后最終觸發 FulGC。所以就能得知是 Survivor 空間設置太小,導致對象過早進入老年代因此調大 Survivor。
或者是晉升年齡設置的太小,也有可能分析日志之后發現是內存泄漏、或者有第三方類庫調用了System.gc 等等。
反正具體場景具體分析,核心思想就是盡量在新生代把對象給回收了。