行为参数(Behavioral Options)
-XX:-DisableExplicitGC
禁止调用System.gc();但jvm的gc仍然有效
-XX:+MaxFDLimit
最大化文件描述符的数量限制
-XX:+ScavengeBeforeFullGC
Full GC前调用YGC,默认为true
-XX:+UseGCOverheadLimit
在抛出OOM之前限制jvm耗费在GC上的时间比例
-XX:+UseThreadPriorities
启用本地线程优先级
-XX:+UseAdaptiveSizePolicy
自动选择年轻代区大小和相应的Survivor区比例
收集器设置
-XX:+UseParallelGC
设置并行收集器<br>
-XX:+UseParallelOldGC
老年代使用并行收集器<br>
-XX:+UseParNewGC<br>
新生代使用并行收集器
-XX:+UseConcMarkSweepGC
使用CMS并发收集器
-XX:ParallelGCThreads
并行收集器的线程数
并行收集器
-XX:+UseParallelGC
Full GC采用parallel MSC
-XX:+UseParNewGC
新生代使用并行收集器
-XX:-UseParallelOldGC
老年代使用并行收集器<br>
-XX:MaxGCPauseMillis
每次年轻代垃圾回收的最长时间(最大暂停时间)
-XX:GCTimeRatio
设置垃圾回收时间占程序运行时间的百分比
CMS<br>
-XX:+UseConcMarkSweepGC
使用CMS内存收集
-XX:+CMSIncrementalMode
设置为增量模式
-XX:CMSFullGCsBeforeCompaction
多少次后进行内存压缩
-XX:+CMSClassUnloadingEnabled
允许对类元数据进行回收<br>
-XX:+CMSParallelRemarkEnabled
降低标记停顿
-XX+UseCMSCompactAtFullCollection
在FULL GC的时候, 对年老代的压缩
-XX:+UseCMSInitiatingOccupancyOnly
使用手动定义初始化定义开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70
使用cms作为垃圾回收<br>使用70%后开始CMS收集
-XX:CMSInitiatingPermOccupancyFraction
设置Perm Gen使用到达多少比率时触发
G1收集器
-XX:G1HeapRegionSize
指定分区大小(1MB-32MB,且必须是2的幂),默认将整堆划分为2048个分区<br>
-XX:G1NewSizePercent
新生代初始内存大小,默认整堆5%
-XX:G1MaxNewSizePercent
新生代最大内存内存<br>
-XX:G1HeapWastePercent
堆废物百分比,默认5%
-XX:G1MixedGCCountTarget
参数混合周期的大总次数,默认8
性能调优(Performance Tuning)
-XX:NewSize
年轻代大小(1.3/1.4)
-XX:MaxNewSize<br>
年轻代最大值(1.3/1.4)
-XX:MaxNewSize=size
新生成对象能占用内存的最大值
-XX:PermSize
持久代(perm gen)初始值,物理内存的1/64
-XX:MaxPermSize
持久代最大值,物理内存的1/4
-XX:MetaspaceSize
设置元空间大小
-XX:MaxMetaspaceSize
设置最大元空间大小,默认不受限制
-XX:ThreadStackSize
设置线程栈大小,若为0则使用系统默认值
-XX:NewRatio
年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
-XX:SurvivorRatio
Eden区与Survivor区的大小比值
-XX:LargePageSizeInBytes
内存页的大小不可设置过大, 会影响Perm的大小
-XX:+AggressiveHeap
启用Java堆的优化
-XX:+UseFastAccessorMethods
原始类型的快速优化
-XX:+DisableExplicitGC
关闭System.gc()
-XX:MaxTenuringThreshold
垃圾最大年龄
-XX:+UseBiasedLocking
锁机制的性能改善
-XX:+UseLargePages
使用大页面内存
-XX:SoftRefLRUPolicyMSPerMB
每兆堆空闲空间中SoftReference的存活时间,默认1s
-XX:PretenureSizeThreshold
对象超过多大是直接在旧生代分配,默认0
-XX:TLABWasteTargetPercent
TLAB占eden区的百分比,默认1%
-XX:+CollectGen0First
FullGC时是否先YGC,默认false
调试参数(Debugging Options)
-Xloggc:filename
把相关日志信息记录到文件以便分析.<br>与上面几个配合使用
-XX:-PrintGCDetails
每次GC时打印详细信息
-XX:-PrintGCTimeStamps
打印每次GC的时间戳
-XX:+PrintGCApplicationStoppedTime
打印垃圾回收期间程序暂停的时间.可与上面混合使用
-XX:+PrintGCApplicationConcurrentTime
打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用
-XX:+PrintHeapAtGC
打印GC前后的详细堆栈信息
XX:+PrintTenuringDistribution
查看每次minor GC后新的存活周期的阈值
-XX:-CITime
打印消耗在JIT编译的时间
-XX:+PrintTLAB
查看TLAB空间的使用情况
-XX:-PrintCompilation
当一个方法被编译时打印相关信息
-XX:ErrorFile=./hs_err_pid<pid>.log
保存错误日志或者数据到文件中
-XX:-ExtendedDTraceProbes
开启solaris特有的dtrace探针
-XX:HeapDumpPath=./java_pid<pid>.hprof
指定导出堆信息时的路径或文件名
-XX:-HeapDumpOnOutOfMemoryError
当首次遭遇OOM时导出此时堆中相关信息
当首次遭遇OOM时导出此时堆中相关信息
-XX:OnError="<cmd args>;<cmd args>"
出现致命ERROR之后运行自定义命令
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"
当首次遭遇OOM时执行自定义命令
-XX:-PrintClassHistogram
遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:-PrintConcurrentLocks
遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同
-XX:-PrintCommandLineFlags
打印在命令行中出现过的标记
-XX:-TraceClassLoading
跟踪类的加载信息
-XX:-TraceClassLoadingPreorder
跟踪被引用到的所有类的加载信息
-XX:-TraceClassResolution
跟踪常量池
-XX:-TraceClassUnloading
跟踪类的卸载信息
-XX:-TraceLoaderConstraints
跟踪类加载器约束的相关信息