-Xms
设置最少堆内存例如 -Xms11M
-Xmx
设置最大堆内存例如-Xmx11M
-XX:MinHeapFreeRatio
设置堆最小空闲比例,默认为40,当小于这个只是,堆会扩展堆空间
XX:MaxHeapFreeRatio
设置堆最大空闲比例,默认为70,当大于这个只是,堆会压缩堆空间
-xss
设置为每个线程分配的内存大小,影响函数堆栈的深度,例如 -Xss256m
-Xmn
设置新生代大小。老年的=Xmx减去Xmn
–XX:NewRatio
设置新生代和老年代的比例默认比例为 1:2,
-XX:SurvivorRatio
eden:fromqu区比例 例如-XX:SurvivorRatio=8 表示 新生带有10M from、to 为 1M, eden为 8M。
-XX:TargetSurivioRatio
from区利用率、如:-XX:TargetSurivioRatio=90
-XX:PretenureSizeThreshold
设置大对象进入老年带的阈值 (只对串行收集器、新生代并行收集器有效)例如:-XX:PretenureSizeThreshold=1000000 ,设置大于1M,直接进入老年带
-XX:MaxTenuringThreshold
设置进入老年带的年龄,默认为15。实际进入老年代的年龄为动态计算年龄和它的较小值。-XX:MaxTenuringThreshold=15
-XX:+DisableExplicitGC
屏蔽System.gc()
-XX:+TraceClassLoading
打印类的加载情况
-verbose:gc 或 -XX:+PrintGCDetails
打印垃圾收集过程
-XX:+PrintAssembly
打印汇报代码,需要配合其他参数使用,详细使用可以参考下面博客:
http://blog.csdn.net/kisimple/article/details/51526034
-XX:MaxDirectMemorySize
指定直接在内存分配的大小,不在jvm的堆中。 如 -XX:MaxDirectMemorySize=1M,nio中比较常用
ByteBuffer.allocateDirect(max);
-XX:PermSize
非堆内存初始大小(方法区:常量池、元数据)-XX:PermSize=2M
-XX:PermSize
非堆内存最大值(方法区:常量池、元数据)-XX:MaxPermSize=4M
-Xmn
设置新生带大小,-Xmn2M
-XX:NewSize
设置新生带初始大小 -XX:NewSize=2M
-XX:MaxNewSize
设置新生带最大大小-XX:MaxNewSize=2M
-XX:SurvivorRatio
新生代内部比例 survivorRation=survivor/s0 = survivor/s1 如 -XX:SurvivorRatio=8
-XX:NewRatio
老年代/新生代 如-XX:NewRatio=1
-XX:+UseSerialGC
指定新生带和老年带,使用串行垃圾回收器,jvm client 模式的默认,垃圾回收器
-XX:+UseParNewGC
指定新生带使用并行回收器,老年带使用串行回收器
-XX:+UseParallelGC
老年带并行回收器
-XX:ParallelGCThreads
指定并行收集器工作线程,当cpu小于8,线程等于cpu数。大于8,cpu为3+5*cpu_count/8.CMS默认线程数为(count+3/)2
-XX:+UseConcMarkSweepGC
指定新生产使用并行,老年带使用cms
-XX:+UseParallelGC
指定新生带使用并行回收器,老年带使用串行回收器
-XX:+UseParallelOldGC
指定新生代和老年带都是用并行回收器
并行回收器可以使用如下参数:
(1)-XX+MaxGCPauseMillis:设置最大停顿时间
(2)-XX:GCtimeRatio:设置吞吐量大小n(0-100),则系统垃圾回收将不大于1/(n+1)
(3)-XX:+UseAdaptiveSizePolicy 打开自适应GC策略,自动调整新生大的比例等等
-XX:CMSInitiatingOccupancyFraction
指定CMS回收阈值,默认老年代为68%,进行回收
-XX:+UseCMSCompactAtFullCollection
指定触发了多少次cms后,进行标记压缩。
-XX:+unlockExperimentalVMOptions -XX:+UseG1GC
启用G1收集器
-XX:MaxGCPauseMillis -XX:MaxGCPauseMillis
指定G1收集全的目标,在200ms中停顿不超过50ms ,但不能保证执行它。-XX:MaxGCPauseMillis -= 50 XX:MaxGCPauseMillis = 200
-XX:CompileThreshold
设置被编译为本地机器码阈值,默认客户端为1500,服务端为10000 。使用下面两个参数可以查看编译信息 -XX:CompileThreshold=1500 -XX:+PrintCompilation -XX:+CITime
-XX:+HeapDumpOnOutOfMemoryError
当发生oom时保留堆快照,有助于分析内存溢出。
-XX:HeapDumpPath
指定堆快照日志路径 ,例如-XX:HeapDumpPath:C:\a.hprof
-XX:OnOutOfMemoryError
指定发生oom的时候,调用脚本。如-XX:OnOutOfMemoryError:C:\reset.bat
-XX:+PrintTenuringDistribution
打印实时晋升老年带的实际阈值
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime
打印GC停顿时间,应用程序在GC停顿时间的执行时间
-Xloggc
指定gc日志存放路径 如:-Xloggc:C:\gc.log
-XX:+TraceClassLoading -XX:+TraceClassUnloading
打印类加载和卸载
-XX:+DisableExplicitGC
禁用显示gc,如System.gc()
-Xnoclassgc
禁用类回收
-Xincgc
启用增量GC,GC线程与程序交叉执行,以减少程序的停顿时间
-XX:-UseSplitVerifier -XX:-FailOverToOldVerifier
指定使用旧类校验器 、关闭再次校验功能
-XX:+UseLargePages -XX:LargePageSizeInBytes
启动大页,指定大页大小
-XX:+UseCompressedOops
打开压缩指针,较少6464位JVM的寻址地址,减少对内存的损耗
总结: