Endix-C-虚拟机参数
使用 -XX:+PrintFlagsFinal
可以输出所有参数的名称和默认值。应用参数的方式有以下 3 种:
-XX:+<option>开启option参数
-XX:-<option>关闭option参数
-XX:<option>=<value>将option参数的值设置为value
以下是 JDK6 中常用的参数。
内存管理参数
参数 | 默认值 | 使用介绍 |
---|---|---|
DisableExplicitGC | 默认关闭 | 忽略来自 System.gc() 方法触发的垃圾回收 |
ExplicitGCInvokesConcurrent | 默认关闭 | 当收到 System.gc() 方法提交的垃圾回收申请时,使用 CMS 收集器进行收集 |
UseSerialGC | Client 模式 的虚拟机默认开启,其他模式默认关闭 | 虚拟机运行在 Client 模式下的默认值,打开此开关后,使用 Serial+Serial Old 的收集器组合进行内存回收 |
UseParNewGC | 默认关闭 | 打开此开关后,使用 ParNew+Serial Old 的收集器组合进行内存回收 |
UserConcMarkSweepGC | 默认关闭 | 打开此开关后,使用 ParNew+CMS+Serial Old 的收集器组合进行内存回收。如果 CMS 收集器出现 Concurrent Mode Failure,则 Serial Old 收集器将作为后备收集器 |
UserParallelGC | Server 模式的虚拟机默认开启,其他模式默认关闭 | 虚拟机运行在 Server 模式下的默认值,打开此开关后,使用 Parallel Scavenge+Serial Old 的收集器组合进行内存回收 |
UseParallelOldGC | 默认关闭 | 打开此开关后,使用 Parallel Scavenge+Parallel Old 的收集器组合进行内存回收 |
ServivorRatio | 默认为 8 | 新生代中 Eden 区域与 Survivor 区域的容量比值 |
PretenureSizeThreshold | 无默认值 | 直接晋升到老年代的对象大小,设置该参数后,大于这个参数的对象将直接在老年代分配 |
MaxTenuringThreshold | 默认为 15 | 晋升到老年代的对象年龄。每个对象在坚持过一次 Mirror GC 之后,年龄就加 1,当超过该参数值时进入老年代 |
UseAdaptiveSizePolicy | 默认开启 | 动态调整 Java 堆中各个区域的大小及进入老年代的年龄 |
HandlePromotionFailure | JDK 1.5 及之前的版本默认关闭,JDK 1.6 之后默认开启 | 是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个 Eden 和 Survivor 区的所有对象都存活的极端情况 |
ParallelGCThreads | 少于或等于 8 个 CPU 时默认为 CPU 的数量值,多余 8 个 CPU 时比 CPU 的数量之小 | 设置并行 GC 时进行内存回收的线程数 |
GCTimeRatio | 默认为 99 | GC 时间占总时间的比例,默认允许 1% 的 GC 时间。仅在使用 Parallel Scavenge 收集器时生效 |
MaxGCPauseMillis | 无默认值 | 设置 GC 的最大停顿时间。仅在使用 Parallel Scavenge 收集器时生效 |
CMSInitiatingOccupancyFraction | 默认 68 | 设置 CMS 收集器在老年代空间被使用多少后触发垃圾回收,仅在使用 CMS 收集器时生效 |
UseCMSCompactAtFullCollection | 默认开启 | 设置 CMS 收集器在完成垃圾收集后是否需要进行一次内存碎片整理。仅在使用 CMS 收集器时生效 |
CMSFullGCsBeforeCompaction | 无默认值 | 设置 CMS 收集器在进行若干次垃圾收集后在启动一次内存碎片整理。仅在使用 CMS 收集器时生效 |
ScavengeBeforeFullGC | 默认开启 | 在 Full GC 发生之前触发一次 Mirror GC |
UseGCOverheadLimit | 默认开启 | 禁止 GC 过程无限制的执行,如果过于频繁,就直接发生 OutOfMemory 异常 |
UseTLAB | Server 模式默认开启 | 优先在本地线程缓冲区中分配对象,避免分配内存时的锁定过程 |
MaxHeapFreeRatio | 默认为 70 | 当 Xmx 比 Xms 值大时,堆可以动态收缩和扩展,该参数控制当堆空闲大于指定比例时自动收缩 |
MinHeapFreeRatio | 默认为 70 | 当 Xmx 比 Xms 值小时,对可以动态收缩或扩展,该参数控制当对空闲小于指定比率时自动扩展 |
MaxPermSize | 大部分情况下默认为 64MB | 永久代的最大值 |
即时编译参数
参数 | 默认值 | 使用介绍 |
---|---|---|
CompileThreshold | Client 模式下默认为 1500,Server 模式下为 1000 | 触发方法即时编译的阈值 |
OnStackReplaceRercentage | Client 模式下为 933,Server 模式下为 140 | OSR 比率,它是 OSR 即时编译阈值计算公式的一个参数,用于代替 BckEdgeThreshold 参数控制回边计数器的实际溢出阈值 |
ReversedCodeCacheSize | 大部分情况下是 32MB | 即时编译器编译的代码缓存的最大值 |
类型加载参数
参数 | 默认值 | 使用介绍 |
---|---|---|
UseSplitVerifer | 默认开启 | 使用依赖 StackMapTable 信息的类型检查代替数据流分析,以加快字节码校验速度 |
FailOverToOldVerifier | 默认开启 | 当类型校验失败时,是否允许回到老的类型推导校验方式重新校验,如果开启则允许 |
RelaxAccessControlCheck | 默认关闭 | 在检验阶段放松对类型访问性的限制 |
多线程相关参数
参数 | 默认值 | 使用介绍 |
---|---|---|
UseSpinning | JDK 1.6 默认开启,JDK 1.5 默认关闭 | 开启自旋锁以避免线程频繁挂起和唤醒 |
PreBlockSpin | 默认为 10 | 使用自旋锁时默认的自旋次数 |
UseThreadPriorities | 默认开启 | 使用本地线程优先级 |
UseBiasedLocking | 默认开启 | 使用使用偏向锁 |
UseFastAccessorMethods | 默认开启 | 当频繁反射执行某个方法时,生成字节码来加快反射的执行速度 |
性能参数
参数 | 默认值 | 使用介绍 |
---|---|---|
AggressiveOpts | JDK 1.6 默认开启,JDK 1.5 默认关闭 | 使用激进的优化特性,这些特性一般是具备正面和负面双重影响的,需要根据具体应用特点来分析才能判定是否对性能有益 |
UseLargePages | 默认开启 | 如果可能,使用大内存分页,该特性需要操作系统的支持 |
LargePageSizeInBytes | 默认为 4MB | 使用指定大小的内存分页,该特性需要操作系统的支持 |
StringCache | 默认开启 | 使用使用字符串缓存 |
调试参数
参数 | 默认值 | 使用介绍 |
---|---|---|
HeapDumpOnOutOfMemoryError | 默认关闭 | 在发生内存溢出时是否生成堆转储快照 |
OnOutOfMemoryError | 无默认值 | 当虚拟机抛出内存溢出异常时,执行指定的命令 |
OnError | 无默认值 | 当虚拟机抛出 ERROR 异常时,执行指定的命令 |
PrintClassHistogram | 默认关闭 | 使用 [ctrl]-[break] 快捷键输出类统计状态,相当于 jmap-histo 的功能 |
PrintConcurrentLocks | 默认关闭 | 打印 JUC 中锁的状态 |
PrintCommandLineFlags | 默认关闭 | 打印启动虚拟机时输入的非稳定参数 |
PrintCompilation | 默认关闭 | 打印方法的即时编译信息 |
PrintGC | 默认关闭 | 打印 GC 信息 |
PrintGCDetails | 默认关闭 | 打印 GC 详细信息 |
PrintGCtimeStamps | 默认关闭 | 打印 GC 停顿耗时 |
PrintTenuringDistribution | 默认关闭 | 打印 GC 后新生代各个年龄对象的大小 |
TracClassLoading | 默认关闭 | 打印类加载信息 |
TraceClassUnloading | 默认关闭 | 打印类卸载信息 |
PringInlining | 默认关闭 | 打印方法的内联信息 |
PrintCFGToFile | 默认关闭 | 将 CFG 图信息输出到文件,只有 DEBUG 版虚拟机才支持该参数 |
PrintIdealGraphFile | 默认关闭 | 将 Ideal 图信息输出到文件,只有 DEBUG 版虚拟机才支持该参数 |
UnlockDiagnosticVM Options | 默认关闭 | 让虚拟机进入诊断模式,一些参数(如 PrintAssembly)需要在诊断模式下才能使用 |
PrintAssembly | 默认关闭 | 打印即时编译后的二进制信息 |
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.