首先需要自己根据机器的配置设置JVM中各区域的初步大小,如下:
-Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M接着需要指定垃圾回收器,G1的话,其实可调优不多,一般使用停顿时间参数就好,所以这里使用ParNew+CMS,参数如下:
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=92 -XX:CMSScavengeBeforeRemark -XX:UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelInitialMarkEnabled然后在加上一些通用参数,比如说禁用主动GC(慎用,有时候可能会影响到堆外内存的回收),打印GC详细日志保存,以及内存溢出时dump文件等:
-XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom最终参考JVM参数模版如下:
-Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=92 -XX:CMSScavengeBeforeRemark -XX:UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelInitialMarkEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom以上参数中,通用参数其实不用怎么做改变,最多就是改下dump文件路径,而JVM各区域的内存分配则需要根据系统的运行情况再做调优和细化,至于中间部分的垃圾回收器相关参数,则根据具体的垃圾回收器对应的参数来选择使用即可。