-Xms(初始堆大小)和 -Xmx(最大堆大小)设置需要平衡:
- 过低的风险:频繁 GC,降低应用性能
- 过高的风险:浪费物理内存,同时留给非堆区域(Metaspace、DirectBuffer、线程栈)的空间不足
经验值:
- 一般建议:堆大小约设置为总物理内存的 1/2 左右,另 1/2 留给非堆部分使用
- 建议 Xms = Xmx:避免运行时频繁调整堆大小带来的抖动
- 调整新生代/老年代比例:通过
-XX:NewRatio平衡两代的比例,一般根据对象生命周期分布调整 - 结合监控验证:通过 JVM 监控观察实际内存使用、GC 频率和耗时,逐步优化
除此之外还要根据业务特征(吞吐量优先还是延迟优先)选择合适的 GC 算法。




