-XX:+PrintGCDetails 打印GC的详细日志,并且在程序运行结束是会打印出JVM的内存占用情况
-XX:+PrintGCDateStamps 打印GC发生的时间
-Xloggc:d:\\gc.log gc日式默认是打印在控制台,添加这个参数可以指定GC日志的输出位置,指定后控制台就无法查看GC日志了
-XX:+TraceClassLoading 监控类的加载
-Xmx 指定最大堆内存
-Xmn 设置新生代大小
-XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值 4 表示 新生代:老年代=1:4,即年轻代占堆的1/5
-XX:SurvivorRatio 设置两个Survivor区和eden的比 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10
-XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件
-XX:HeapDumpPath=d:/a.dump 导出OOM的路径
-XX:OnOutOfMemoryError 在OOM时,执行一个脚本"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“当程序OOM时,在D:/a.txt中将会生成线程的dump可以在OOM时,发送邮件,甚至是重启程序
XX:PermSize 设置永久区的初始空间
-XX:MaxPermSize 设置永久区最大空间
-Xss 指定栈的大小
-XX:+UseParNewGC 新生代并行,老年代串行,Serial收集器新生代的并行版本,复制算法,多线程,需要多核支持
-XX:ParallelGCThreads 限制线程数量
-XX:MaxGCPauseMills 最大停顿时间,单位毫秒,GC尽力保证回收时间不超过设定值
-XX:GCTimeRatio 0-100的取值范围,垃圾收集时间占总时间的比 默认99,即最大允许1%时间做GC
这两个参数是矛盾的。因为停顿时间和吞吐量不可能同时调优
-XX:+UseConcMarkSweepGC Concurrent Mark Sweep 并发标记清除,老年代收集器(新生代使用ParNew)
-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值
-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次整理,整理过程是独占的,会引起停顿时间变长
-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理
-XX:ParallelCMSThreads 设定CMS的线程数量
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收