小于32G的机器,总结的GC调优参考模版:
-Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelInitialMarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/demo1/oom
-Xms4096M:初始化堆内存大小
-Xmx4096M:最大堆内存大小
-Xmn3072M:新生代堆内存大小
-Xss1M:设置单个线程栈大小
-XX:MetaspaceSize=256M:元空间内存大小
-XX:MaxMetaspaceSize=256M:最大元空间内存大小, 各个内存区域的大小分配,需要自己精心调优
-XX:+UseParNewGC:新生代使用ParNew垃圾回收器
-XX:+UseConcMarkSweepGC:使用CMS垃圾回收器
-XX:CMSInitiatingOccupancyFaction=92:老年代达到92%执行进行FullGC
-XX:+UseCMSCompactAtFullCollection:进行FullGC时,对老年代空间进行压缩
-XX:CMSFullGCsBeforeCompaction=0:每次FullGC都进行空间的压缩
-XX:+CMSParallelInitialMarkEnabled: “初始标记” 阶段开启多线程并发执行。
-XX:+CMSScavengeBeforeRemark:CMS的重新标记阶段之前,先尽量执行一次Young GC
-XX:+DisableExplicitGC: 直接禁止掉 system.gc()
-XX:+PrintGCDetails:打印GC信息
-Xloggc:gc.log:打印的日志文件名称
-XX:+HeapDumpOnOutOfMemoryError :发生OOM的时候dump内存快照,便于分析OOM原因
-XX:HeapDumpPath=/usr/local/app/oom:dump内存快照文件的路径