以RocketMQ的namesrv和broker启动为例,理解CMS和G1垃圾收集器下的jdk参数
CMS垃圾收集器
以RocketMQ中runserver.cmd为例,这是启动NameSrv的命令行文件
set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_srv_gc.log"-XX:+PrintGCDetails"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs=%BASE_DIR%lib"
set "JAVA_OPT=%JAVA_OPT% -cp"%CLASSPATH%""
"%JAVA%" %JAVA_OPT% %*
-server
-sever:在多个CPU时可优化性能
-Xms和-Xmx设置为 FullGC之后的老年代内存占用的3-4倍
-Xms:初始heap大小,使用的最小内存,CPU性能高时此值应设大一些;一般和Xmx一样,避免每次gc后JVM重新分配内存
-Xmx:heap的最大值
-Xmn:为年轻代配置一个大堆(