官网地址:https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html
java最新JDK参数设置 行为选项 Garbage First(G1)垃圾收集选项 性能选项 调试选项
行为选项
选项 默认值 描述 -XX:-AllowUserSignalHandlers
未设置 如果应用程序安装了信号处理程序,不要抱怨。(仅适用于 Solaris 和 Linux。) -XX:AltStackSize=16384
未设置 备用信号栈大小(以 K 字节为单位)。(仅适用于 Solaris,在 5.0 中已删除。) -XX:-DisableExplicitGC
未设置 默认情况下启用对 System.gc()
的调用(-XX:-DisableExplicitGC
)。使用 -XX:+DisableExplicitGC
禁用对 System.gc()
的调用。请注意,JVM 仍会在必要时执行垃圾回收。 -XX:+FailOverToOldVerifier
未设置 当新的类型检查器失败时,故障转移到旧的验证器。(在 6 中引入。) -XX:+HandlePromotionFailure
false
年轻代收集不需要保证所有活动对象的完全提升。(在 1.4.2 更新 11 中引入)[5.0 及更早版本:false
。] -XX:+MaxFDLimit
未设置 将文件描述符的数量增加到最大值。(仅适用于 Solaris。) -XX:PreBlockSpin=10
未设置 与 -XX:+UseSpinning
一起使用的旋转计数变量。控制在进入操作系统线程同步代码之前允许的最大旋转迭代次数。(在 1.4.2 中引入。) -XX:-RelaxAccessControlCheck
未设置 放宽验证器中的访问控制检查。(在 6 中引入。) -XX:+ScavengeBeforeFullGC
未设置 在完全垃圾回收之前进行年轻代垃圾回收。(在 1.4.1 中引入。) -XX:+UseAltSigs
未设置 使用备用信号而不是 SIGUSR1
和 SIGUSR2
作为 VM 内部信号。(在 1.3.1 更新 9、1.4.1 中引入。仅适用于 Solaris。) -XX:+UseBoundThreads
未设置 将用户级线程绑定到内核线程。(仅适用于 Solaris。) -XX:-UseConcMarkSweepGC
未设置 在老年代使用并发标记-清除收集。(在 1.4.1 中引入。) -XX:+UseGCOverheadLimit
未设置 使用一种策略,在抛出 OutOfMemory 错误之前限制 JVM 在垃圾回收上花费的时间比例。(在 6 中引入。) -XX:+UseLWPSynchronization
未设置 使用基于 LWP 的同步而不是基于线程的同步。(在 1.4.0 中引入。仅适用于 Solaris。) -XX:-UseParallelGC
未设置 在清理时使用并行垃圾收集。(在 1.4.1 中引入。) -XX:-UseParallelOldGC
未设置 在完全收集时使用并行垃圾收集。启用此选项将自动设置 -XX:+UseParallelGC
。(在 5.0 更新 6 中引入。) -XX:-UseSerialGC
未设置 使用串行垃圾收集。(在 5.0 中引入。) -XX:-UseSpinning
未设置 在进入操作系统线程同步代码之前,在 Java 监视器上启用简单旋转。(仅适用于 1.4.2 和 5.0。)[1.4.2,多处理器 Windows 平台:true
] -XX:+UseTLAB
未设置 使用线程本地对象分配(在 1.4.0 中引入,在此之前称为 UseTLE。)[1.4.2 及更早版本,x86 或 -client
:false
] -XX:+UseSplitVerifier
false
使用带有 StackMapTable 属性的新类型检查器。(在 5.0 中引入。)[5.0:false
] -XX:+UseThreadPriorities
未设置 使用本机线程优先级。 -XX:+UseVMInterruptibleIO
未设置 在 I/O 操作之前或与 EINTR 一起进行线程中断会导致 OS_INTRPT。(在 6 中引入。仅适用于 Solaris。)
Garbage First(G1)垃圾收集选项
选项 默认值 描述 -XX:+UseG1GC
未设置 使用 Garbage First (G1) 收集器 -XX:MaxGCPauseMillis=n
未设置 设置最大垃圾收集暂停时间的目标。这是一个软目标,JVM 将尽力实现它。 -XX:InitiatingHeapOccupancyPercent=n
45
堆占用率达到多少时开始并发垃圾收集。该值表示整个堆的占用率,而不仅仅是某一代的占用率。值为 0 表示执行恒定的垃圾收集周期。默认值为 45%。 -XX:NewRatio=n
2
老年代与年轻代大小的比例。默认值为 2。 -XX:SurvivorRatio=n
8
eden 区与 Survivor 区大小的比例。默认值为 8。 -XX:MaxTenuringThreshold=n
15
对象晋升到老年代的最大年龄。默认值为 15。 -XX:ParallelGCThreads=n
未设置 垃圾收集器并行阶段使用的线程数。默认值因 JVM 运行的平台而异。 -XX:ConcGCThreads=n
未设置 并发垃圾收集器使用的线程数。默认值因 JVM 运行的平台而异。 -XX:G1ReservePercent=n
10
设置保留的堆空间大小,以减少晋升失败的可能性。默认值为 10%。 -XX:G1HeapRegionSize=n
未设置 将 Java 堆划分为大小均匀的区域。该参数的默认值根据堆大小以人体工程学方式确定。最小值为 1MB,最大值为 32MB。
性能选项
选项 默认值 描述 -XX:+AggressiveOpts
未设置 开启预计在未来版本中成为默认设置的点性能编译器优化。(在 5.0 更新 6 中引入。) -XX:CompileThreshold=10000
-client
:1500编译前的方法调用/分支数。 -XX:LargePageSizeInBytes=4m
未设置 设置 Java 堆使用的大页大小。(在 1.4.0 更新 1 中引入。)[amd64:2m。] -XX:MaxHeapFreeRatio=70
未设置 垃圾回收后避免堆收缩的最大堆空闲比例。 -XX:MaxNewSize=size
未设置 新生代的最大大小(以字节为单位)。自 1.4 以来,MaxNewSize 是根据 NewRatio 计算的。[1.3.1 Sparc:32m;1.3.1 x86:2.5m。] -XX:MaxPermSize=64m
未设置 永久代的大小。[5.0 及更高版本:64 位 VMs 放大 30%;1.4 amd64:96m;1.3.1 -client:32m。] -XX:MinHeapFreeRatio=40
未设置 垃圾回收后避免堆扩展的最小堆空闲比例。 -XX:NewRatio=2
未设置 老年代与新生代大小的比例。[Sparc -client:8;x86 -server:8;x86 -client:12。]-client:4(1.3)8(1.3.1+),x86:12] -XX:NewSize=2m
未设置 新生代的默认大小(以字节为单位)[5.0 及更高版本:64 位 VMs 放大 30%;x86:1m;x86,5.0 及更早版本:640k] -XX:ReservedCodeCacheSize=32m
未设置 保留的代码缓存大小(以字节为单位)-最大代码缓存大小。[Solaris 64 位、amd64 和 -server x86:2048m;在 1.5.0_06 及更早版本中,Solaris 64 位和 amd64:1024m。] -XX:SurvivorRatio=8
未设置 eden 与 Survivor 空间大小的比例[Solaris amd64:6;Sparc 在 1.3.1 中:25;其他 Solaris 平台在 5.0 及更早版本中:32] -XX:TargetSurvivorRatio=50
未设置 垃圾回收后 Survivor 空间的期望使用比例。 -XX:ThreadStackSize=512
未设置 线程栈大小(以千字节为单位)。(0 表示使用默认栈大小)[Sparc:512;Solaris x86:320(在 5.0 及更早版本中为 256);Sparc 64 位:1024;Linux amd64:1024(在 5.0 及更早版本中为 0);其他所有:0。] -XX:+UseBiasedLocking
未设置 启用偏向锁。有关更多详细信息,请参阅此调优示例。(在 5.0 更新 6 中引入。)[5.0:false] -XX:+UseFastAccessorMethods
未设置 使用优化版本的 GetField。 -XX:-UseISM
未设置 使用亲密共享内存。[不接受非 Solaris 平台。] -XX:+UseLargePages
未设置 使用大页内存。(在 5.0 更新 5 中引入。)有关详细信息,请参阅 Java 对大内存页的支持。 -XX:+UseMPSS
未设置 使用 4mb 页面支持多页大小堆。不要与 ISM 一起使用,因为这会取代对 ISM 的需求。(在 1.4.0 更新 1 中引入,与 Solaris 9 及更高版本相关。)[1.4.1 及更早版本:false] -XX:+UseStringCache
未设置 启用常用字符串的缓存。 -XX:AllocatePrefetchLines=1
未设置 使用预取指令在最后一次对象分配后加载的缓存行数。如果最后分配的对象是实例,则默认值为 1;如果是数组,则为 3。 -XX:AllocatePrefetchStyle=1
未设置 预取指令的生成代码样式。0 - 不生成预取指令,1 - 在每次分配后执行预取指令,2 - 使用 TLAB 分配水印指针控制预取指令的执行。 -XX:+UseCompressedStrings
未设置 对于可以表示为纯 ASCII 的字符串,使用字节数组。(在 Java 6 更新 21 性能版本中引入) -XX:+OptimizeStringConcat
未设置 尽可能优化字符串连接操作。(在 Java 6 更新 20 中引入)
调试选项
选项 默认值 描述 -XX:-CITime
未设置 打印在 JIT 编译器中花费的时间。(在 1.4.0 中引入。) -XX:ErrorFile=./hs_err_pid<pid>.log
未设置 如果发生错误,将错误数据保存到此文件。(在 6 中引入。) -XX:-ExtendedDTraceProbes
未设置 启用影响性能的 dtrace
探测。(在 6 中引入,仅适用于 Solaris。) -XX:HeapDumpPath=./java_pid<pid>.hprof
未设置 堆转储的目录或文件名路径。可管理。(在 1.4.2 更新 12、5.0 更新 7 中引入。) -XX:-HeapDumpOnOutOfMemoryError
未设置 当抛出 java.lang.OutOfMemoryError
时将堆转储到文件。可管理。(在 1.4.2 更新 12、5.0 更新 7 中引入。) -XX:OnError="<cmdargs>;<cmdargs>"
未设置 在发生致命错误时运行用户定义的命令。(在 1.4.2 更新 9 中引入。) -XX:OnOutOfMemoryError="<cmdargs>; <cmdargs>"
未设置 当首次抛出 OutOfMemoryError
时运行用户定义的命令。(在 1.4.2 更新 12、6 中引入。) -XX:-PrintClassHistogram
未设置 在 Ctrl-Break 时打印类实例的直方图。可管理。(在 1.4.2 中引入。)jmap -histo
命令提供了等效的功能。 -XX:-PrintConcurrentLocks
未设置 在 Ctrl-Break 线程转储中打印 java.util.concurrent
锁。可管理。(在 6 中引入。)jstack -l
命令提供了等效的功能。 -XX:-PrintCommandLineFlags
未设置 打印命令行上出现的标志。(在 5.0 中引入。) -XX:-PrintCompilation
未设置 在方法编译时打印消息。 -XX:-PrintGC
未设置 在垃圾回收时打印消息。可管理。 -XX:-PrintGCDetails
未设置 在垃圾回收时打印更多详细信息。可管理。(在 1.4.0 中引入。) -XX:-PrintGCTimeStamps
未设置 在垃圾回收时打印时间戳。可管理(在 1.4.0 中引入。) -XX:-PrintTenuringDistribution
未设置 打印保留期限分布信息。 -XX:-PrintAdaptiveSizePolicy
未设置 启用打印有关自适应生成大小的信息。 -XX:-TraceClassLoading
未设置 跟踪类的加载。 -XX:-TraceClassLoadingPreorder
未设置 按引用顺序跟踪所有已加载的类(未加载)。(在 1.4.2 中引入。) -XX:-TraceClassResolution
未设置 跟踪常量池解析。(在 1.4.2 中引入。) -XX:-TraceClassUnloading
未设置 跟踪类的卸载。 -XX:-TraceLoaderConstraints
未设置 跟踪加载器约束的记录。(在 6 中引入。) -XX:+PerfDataSaveToFile
未设置 在退出时将 jvmstat
二进制数据保存到文件。 -XX:ParallelGCThreads=n
未设置 设置年轻代和老年代并行垃圾收集器中的垃圾收集线程数。默认值因 JVM 运行的平台而异。 -XX:+UseCompressedOops
未设置 对于 Java 堆大小小于 32GB 的情况,启用压缩指针(对象引用表示为 32 位偏移量而不是 64 位指针)以优化 64 位性能。 -XX:+AlwaysPreTouch
未设置 在 JVM 初始化期间预触摸 Java 堆。因此,在初始化期间,堆的每一页都将被清零,而不是在应用程序执行期间逐渐清零。 -XX:AllocatePrefetchDistance=n
未设置 设置对象分配的预取距离。即将用新对象的值写入的内存将在距离最后分配的对象的地址此距离(以字节为单位)处被预取到缓存中。每个 Java 线程都有自己的分配点。默认值因 JVM 运行的平台而异。 -XX:InlineSmallCode=n
未设置 仅当生成的本机代码大小小于此值时,内联先前编译的方法。默认值因 JVM 运行的平台而异。 -XX:MaxInlineSize=35
未设置 要内联的方法的最大字节码大小。 -XX:FreqInlineSize=n
未设置 要内联的频繁执行的方法的最大字节码大小。默认值因 JVM 运行的平台而异。 -XX:LoopUnrollLimit=n
未设置 使用服务器编译器中间表示节点数小于此值的循环体进行展开。服务器编译器使用的限制是此值的函数,而不是实际值。默认值因 JVM 运行的平台而异。 -XX:InitialTenuringThreshold=7
未设置 设置在并行年轻代收集器中用于自适应 GC 大小调整的初始保留期限阈值。保留期限阈值是对象在被提升到旧代或保留代之前在年轻代中存活的次数。 -XX:MaxTenuringThreshold=n
未设置 设置用于自适应 GC 大小调整的最大保留期限阈值。当前的最大值为 15。并行收集器的默认值为 15,CMS 的默认值为 4。 -Xloggc:<filename>
未设置 将 GC 详细输出记录到指定文件。详细输出受正常的 GC 详细日志标志控制。 -XX:-UseGCLogFileRotation
未设置 启用 GC 日志文件轮换,需要 -Xloggc
。 -XX:NumberOfGClogFiles=1
未设置 设置轮换日志文件时使用的文件数量,必须大于或等于 1。轮换的日志文件将使用以下命名方案,<filename>.0
、<filename>.1
、…、<filename>.n-1
。 -XX:GCLogFileSize=8K
未设置 日志文件达到此大小(以字节为单位)时将进行轮换,必须大于或等于 8K。