-server : jvm启用server模式,默认是client模式,server模式是经过优化的,启动会比client模式要慢,服务器一般启用server模式,简单测试可以就用client模式。
-Xms -- 设置堆内存初始大小,
-Xmx -- 设置堆内存最大值,一般与-Xms相同。
-Xmn(-XX:NewSize) -- 设置新生代
-XX:MaxNewSize --新生代最大size
-XX:NewRatio -- 老生代和新生代的比例
-XX:SurvivorRatio --
eden/survivor 比例,默认为8
-XX:PermSize
-XX:MaxPermSize -- 持久代size
-XX:ThreadStackSize(-Xss) --
Thread Stack Size
-XX:MaxTenuringThreshold -- 设置对象在新生代中存活的次数,如果达到这个次数,对象就会进入old gen
-XX:PretenureSizeThreshold -- 设置超过指定大小的大对象直接分配在旧生代中
-XX:MaxDirectMemorySize=256m -- 设置最大堆外内存
-XX:+UseConcMarkSweepGC -- 旧生代和持久代 并发GC,新生代并行GC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+CMSScavengeBeforeRemark 强制Hostspot vm在进入cms remark之前新进行一次minor gc, 通过减少引用老年代空间的新生代对象数目,将remark工作量减少到最少。
-XX:+UseCMSCompactAtFullCollection 在FULL GC的时候, 对年老代的压缩
-XX:CMSFullGCsBeforeCompaction=5 多少次后进行内存压缩
-XX:CMSInitiatingOccupancyFraction=80 老生代达到80%时触发fullgc,默认是92
-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled 为了避免Perm区满引起的长时间的full gc,建议开启CMS回收Perm区选项
-XX:CMSInitiatingPermOccupancyFraction=70
注意:如果同时配置了-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80和-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 ,不管是老生代还是Perm区达到了GC条件,都会触发一次Full GC, 并且会同时回收老生代和Perm区
-Xloggc:/var/log/webapps/gc.log -- gc log
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps “千万不要使用,会导致非常高的IO WAIT” 这个观点有待验证,因为配置这个有的时候也没有问题
-XX:+PrintGCDetails
-XX:+PrintGCApplicationStoppedTime “会打印出非常多的日志,尽量不要使用” 这个观点有待验证,因为配置这个有的时候也没有问题
-XX:+DisableExplicitGC 禁止使用System.gc(),System.gc()是一次stop-the-world gc,影响很大, 但使用这个参数可能也会带来堆外内存溢出的风险
-XX:+ExplicitGCInvokesConcurrent 当使用System.gc()时,使用并发gc,而不是stop-the-world gc,同时也去除了堆外内存溢出的风险
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-Dsun.rmi.dgc.{server|client}.gcInterval=3600000 单位:ms, (RMI 分布式GC(DGC))
-XX:ParallelGCThreads: 年轻代的并行收集线程数默认是(cpu <= 8) ? cpu : 3 + ((cpu * 5) / 8),如果你希望降低这个线程数,可以通过-XX:ParallelGCThreads= N 来调整
-XX:ParallelCMSThreads:CMS默认启动的回收线程数目是 (ParallelGCThreads + 3)/4) ,如果你需要明确设定,可以通过-XX:ParallelCMSThreads=20来设定,其中ParallelGCThreads是年轻代的并行收集线程数
附:
oracle 官网 jvm options
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html