-Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=10 -XX:PretenureSizeThreshold=2M -XX:CMSInitiatingOccupancyFaction=92 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelInitialMarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:./gclog/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/app/oom
解释:
-Xms4096M 堆初始大小
-Xmx4096M 堆最大大小
-Xmn3072M 新生代大小
-Xss1M 线程栈大小
-XX:MetaspaceSize=256m 元空间初始大小
-XX:MaxMetaspaceSize=256m 元空间最大大小
-XX:SurvivorRatio=8 新生代Eden取Survivor区的比例
-XX:+UseParNewGC 新生代垃圾收集器
-XX:+UseConcMarkSweepGC 老年大垃圾收集器
-XX:MaxTenuringThreshold=10 设置的是年龄阈值,默认是15
-XX:PretenureSizeThreshold=2M 大对象的大小,默认值为0,也就是任何对象都先进入新生代;如果设置了这个值,超过这个值直接进入老年代。
-XX:CMSInitiatingOccupancyFaction=92 默认值92,是指设定CMS在对内存占用率达到92%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC)
-XX:+UseCMSCompactAtFullCollection 只是用设定的回收阈值(上面指定的92%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整(不理解)
-XX:CMSFullGCsBeforeCompaction=0 CMS牢记收集器会产生内存碎片,这个参数指定多少次full GC,会压缩内存;默认值为0,就是每次full GC都会压缩内存
-XX:+CMSParallelInitialMarkEnabled 在GC的初始标记阶段,开启并发标记
-XX:+CMSScavengeBeforeRemark
-XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:./gclog/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/app/oom