JVM参数含义
堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。Eden:S0:S1=8:1:1(默认值为8)
-XX:MaxPermSize=n:设置持久代大小
-XX:InitialHeapSize —— 初始堆大小
-XX:MaxHeapSize —— 最大堆大小
-XX:NewSize —— 初始新生代大小
-XX:MaxNewSize —— 最大新生代大小
-XX:PermSize —— 永久代大小
-XX:MaxPermSize —— 最大永久代大小
-XX:MaxTenuringThreshold —— 最大存活年龄(默认值15,即经历15次YGC存活的对象进入老年代)
-XX:PretenureSizeThreshold=10485760 —— 大对象阈值
收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:+UseCMSCompactAtFullCollection —— + 开启CMS在Full GC后进行内存碎片整理,- 关闭
-XX:CMSFullGCsBeforeCompaction=0 —— 与上面的配合使用,数值代表多少次FGC后进行一次碎片整理
-XX:+CMSParallelInitialMarkEnabled —— 在CMS垃圾回收器的“初始标记”阶段开启多线程并发执行
-XX:+CMSScavengeBeforeRemark —— 在CMS的重新标记阶段之前,先尽量执行一次额Young GC
-XX:MaxGCPauseMills=200ms —— G1执行GC的时候最多可以让系统停顿多长时间(默认200ms)
-XX:G1NewSizePercent —— G1设置新生代初始占比(默认5%)
-XX:G1MaxNewSizePercent —— G1设置新生代最大占比(默认60%)
-XX:InitiatingHeapOccupancyPercent —— G1:触发Mix GC的老年代占比阈值(默认45%)
-XX:G1HeapWastePercent —— G1:执行回收时,空闲Region达到一定程度,停止回收(默认5%)
-XX:+DisableExplicitGC —— 禁止显示执行GC,不允许通过代码触发GC(System.gc() 失效)
垃圾回收统计信息
-XX:+HeapDumpOnOutMemoryError —— OOM时dump一份内存快照
-XX:HeapDumpPath=/usr/local/app/oom —— OOM时生成内存快照文件的存放位置
-XX:+PrintGCDetails —— 打印详细的GC日志
-XX:TraceClassLoading/-XX:TraceClassUnloading —— 追踪类的加载和卸载情况,控制台输出
-XX:+PrintGCTimeStamps —— 打印出来每次GC发生的时间
-Xloggc:gc.log —— 设置将gc日志写入一个磁盘文件
更过参数查看:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
JVM调优参数模板
常用参数模板,可针对项目系统具体情况自行调整
-Xms4096M
-Xmx4096M
-Xmn3072M
-Xss1M
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=256M
-XX:+UseParNewGC
-XX:+UseCOncMarkSweepGC
-XX:CMSInitiationOccupancyFaction=92
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSParallelInitialMarkEnabled
-XX:CMSScavengeBeforeRemark
-XX:+DisableExplicitGC
-Xlogg:gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/usr/local/app/oom
GC日志