JVM内存参数配置
很多优化无非就是让短期存活的对象尽量都留在survivor里,不要进入老年代,这样在minor gc的时候这些对象都会被回收,不会进到老年代从而导致full gc。
Spring Boot程序的JVM参数设置格式(Tomcat启动直接加载bin目录下catalina.sh文件里,注:X越多的,说明越不稳定,可能在后期版本不使用了):
java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jar
堆配置:
‐Xms:设置初始化java堆的大小
‐Xmx:设置最大java堆的大小
‐Xmn:设置新生代堆的大小
-XX:+/-UseTLAB:设定虚拟机是否使用TLAB(JVM默认会开启-XX:+UseTLAB)。
-XX:TLABSize:指定TLAB大小。
TLAB(本地线程分配缓冲):是对象在分配内存空间时,解决并发问题的一种方法。可看JVM内存分配
-XX:+UseAdaptiveSizePolicy:堆的eden区和survivor区分配比例变化,默认开启。因为堆的eden区和survivor to 和survivor from 空间比例是8:1:1,开启当前参数,会让比例自动变化。关闭是:-XX:-UseAdaptiveSizePolicy
XX:SurvivorRatio:新生代中Eden区域和Survivor区域(From幸存区或To幸存区)的比例,默认为8,也就是说Eden占新生代的8/10,From幸存区和To幸存区各占新生代的1/10