JVM参数踩坑
jinfo -flags pid 查看JVM的控制参数
几个重要的参数:
-Xms: JVM初始堆内存
-Xmx:JVM最大堆内存
-NewRatio : JVM老生代:新生代的比例
-MaxNewSize: 新生代最大可申请内存
-MinHeapFreeRatio = 40 空闲比例小于40%,也就是内存使用达到70%,触发扩容
-MaxHeapFreeRatio = 70 空闲比例大于70%,也就是内存使用低于30%,触发缩容
虽然JVM没有可以配置的形如 MaxOldSize,但其实潜在的: MaxOldSize = 1 - MaxNewSize
1、JVM启动后,按照Xms申请初始内存。
2、初始申请时,需要同时保证 新生代、老生代都不超过对应的最大值。
3、根据老生代能申请的最大值,和NewRatio得到新生代的值。
4、在参数设置不合理时,容易出现老生代触顶,从而导致扩容失败,而浪费很多内存。
5、只有初始状态,满足NewRatio,后续扩容后,这个值不一定时刻满足,所以其优先级略低。
浙公网安备 33010602011771号