- 堆初始化和最大配置一致
- 新生代比例大小是否合适
- 新生代S区比例是否合适
- 老年代比例大小是否合适,垃圾占比达到好多触发老年代回收配置
- 元数据区大小是否合适
- 整个应用内存大小是否合适,本身内存太小,怎么优化都是扯淡
- CMS垃圾回收器压缩配置是不是需要加上,加上后可能会cpu负载增加
- CMS一定要注意并发担保失败问题
- 大对象配置直接到老年代
- 垃圾回收器选择,cms适合3-10G内存,再大就搞G1
- 业务特点:吞吐量敏感还是延迟敏感,类型不同决定不同得调优策略
- 内存泄漏
- 大量全表数据查询放到内存
- 文件上传下载
- 一致不释放的内存
- 字符串拼接
- dump内存看看那些对象占用空间较大
新生代朝生夕灭,老年代稳如泰山
好的内存调优结果满足以下几点:
- 满足目前的业务
- 不频繁的进行老年代垃圾回收
- 新生代回收不掉晋升到老年代的比较少或没有
- 新生代和老年代垃圾回收波动比较规律稳定,不会毛刺多
- 元数据空间够用
- 更少的内存成本满足同样的业务
- 满足业务的峰值波动,比如能应对双十一的波动