常用JVM虚拟机参数说明

常用JVM虚拟机参数说明

原文地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

非标准选项

参数说明
-Xcomp强制JVM虚拟机在方法第一次被调用的时候就进行本地编译。
-Xint强制JVM运行在解释模式。在该模式下,方法不会被编译为本地代码,所有的字节码都会被解释执行。
-Xloggc:filename设置GC日志信息的保存路径。如果同时传递-verbose:gc的话,该参数会覆盖-verbose:gc的设置。
-Xmnsize同时设置初始化和最大的年轻代大小,若不指定单位,则默认为字节,在数字后边可以跟单位,如k或K,m或M,g或G。Oracle建议年轻代的大小是整个堆大小的四分之一到一半之间。还可以使用-XX:NewSize设置年轻代的初始大小,-XX:MaxNewSize指定最大大小。
-Xmssize设置堆的初始大小,必须要大于1M,可以通过在大小后追加单位,如k或K,m或M,g或G。若不设置该值,则当前值为年轻代和老年代的初始大小总和。
-Xmxsize设置堆的最大值,必须要大于2M。
-Xsssize设置线程栈的大小。每个平台的默认值不同
Linux/ARM (32-bit): 320 KB
Linux/i386 (32-bit): 320 KB
Linux/x64 (64-bit): 1024 KB
OS X (64-bit): 1024 KB
Oracle Solaris/i386 (32-bit): 320 KB
Oracle Solaris/x64 (64-bit): 1024 KB

高级运行时选项

参数说明
-XX:+DisableAttachMechanism禁止工具连接到当前JVM,当前选项默认关闭,所以可以使用JVM的工具,如jcmdjstackjmapjinfo等。
-XX:MaxDirectMemorySize=size设置New I/O(java.nio包)中direct-buffer最大允许分配的空间,默认为字节。可以追加单位,k或K,m或M,g或G。默认值是0,JVM自动分配direct-buffer的大小。
-XX:-UseBiasedLocking禁用偏向锁。默认使用偏向锁。
-XX:-UseCompressedOops禁用指针压缩。默认打开指针压缩。压缩指针通常用在当堆空间小于32GB的时候。当压缩指针打开的时候,对象引用使用32位偏移量代替64位指针,这样会提高应用在堆小于32GB时候的性能。这个选项只能用在64位的JVM上。

高级JIT编译器选项

参数说明
-XX:+AggressiveOpts启动强制性能优化,该选项有望在以后的发行版中作为默认启动的选项。默认禁用。
-XX:+BackgroundCompilation使用后台编译。该选项默认激活。使用 -XX:-BackgroundCompilation禁用该功能。
-XX:CICompilerCount=threads设置编译线程的数量。JVM在server模式下默认是2,在client模式下默认是1。如果使用分层编译的话,这个值会扩展到与CPU核数一样的值。
-XX:CompileThreshold=invocations设置方法在被编译前的调用次数。在server模式的JVM中,JIT编译器为了可以更有效的编译,会从10000次的方法调用中获取信息。在client模式的JVM中,默认值是1500次。当分层编译启用的时候,该选项会被忽略。
-XX:+DoEscapeAnalysis启用逃逸分析。该选项默认启用。使用-XX:-DoEscapeAnalysis来禁用。只有Java HotSpot Server VM支持该选项。
-XX:+Inline启用方法内联。该选项默认启用以提高性能。可以使用-XX:-Inline关闭方法内联。
-XX:InlineSmallCode=size设置会被内联优化方法的最大大小,默认单位是字节,可以追加单位,如k\K\m\M\g\G,只有小于该值的方法才会被内联优化。默认值是1000字节。
-XX:+PrintAssembly启用该选项后,会使用外部库disassembler.so打印字节码和本地代码的集合。你可以通过这个选项看到生成的代码,从而找到性能问题。该选项默认关闭,通常与-XX:UnlockDiagnosticVMOptions选项一起使用。

高级可靠性选项

参数说明
-XX:+HeapDumpOnOutOfMemory启动该选项后,当java.lang.OutOfMemoryError错误发生后,会在当前文件夹产生一个HPROF类型的Java堆转储文件。可以使用-XX:HeapDumpPath选项显式的指定堆转储文件的路径。该选项默认关闭。

高级垃圾回收选项

参数说明
-XX:+AggressiveHeap启动Java堆优化。根据计算机的配置(RAM和CPU),这个选项会设置各种参数,使其适用于长时间运行且对内存分配比较频繁的应用。该选项默认关闭。
-XX:CMSInitiatingOccupancyFraction=percent设置启动当老年代占用多少百分比的时候,CMS垃圾回收会启动。默认值设置为-1。任何负值(包括默认值)都意味着会使用-XX:CMSTriggerRatio用于定义初始百分比的值。
-XX:CMSTriggerRatio=percent设置由-XX:MinHeapFreeRatio选项指定的在CMS垃圾回收之前百分比的值(0-100),默认是80%。
-XX:ConcGCThreads=threads设置用于并行GC的线程数。默认值是JVM可用的CPU核数。
-XX:+DisableExplicitGC启动该选项会禁止应用中调用System.gc()方法。默认禁用,意味着应用中可以显式的调用System.gc()
-XX:G1HeapRegionSize=size设置当使用G1垃圾收集器的时候,每个区域的值。这个值的取值范围是1M到32M之间。默认的区域大小由堆的大小自动决定。
-XX:+G1PrintHeapRegions启用打印G1垃圾收集器区域分配和回收的信息。该选项默认禁用。
-XX:InitialHeapSize=size设置堆的初始值。默认值在运行时根据系统配置生成。具体可以参考Java虚拟机GC优化指南
XX:InitialSurvivorRatio=ratio设置幸存区的初始比例,如果使用追求吞吐量的垃圾收集器,比如使用-XX:+UseParallelGC-XX:+UseParallelOldGC指令,那么应用会使用当前初始比例启动,并且在运行期间,根据应用的使用情况,自动调整幸存区的比例。如果自适应功能通过-XX:-UseAdaptiveSizePolicy关闭,那么应该使用-XX:SurvivorRatio选项指定整个应用运行期间的幸存区大小。
下面的公式可以根据年轻代的大小(Y)计算幸存区的初始大小(S),初始幸存区的比例(R)。
S=Y/(R+2)
公式中的2代表两个幸存区域。幸存区初始化比例的值越大,幸存区的空间大小越小。
幸存区比例的初始化默认值是8。如果年轻代的大小是2M,则初始化的幸存区大小是0.2M。
-XX:InitiatingHeapOccupancyPercent=percent设置堆占用多少百分比的时候,会启动并行GC循环。这个值用来设置当占用整个堆多少百分比的时候,垃圾收集器会触发一次并行GC循环。默认值是45%。0意味着一个不停歇的GC循环。
XX:MaxGCPauseMillis=time设置一个最大GC停顿的期望时间,单位毫秒。这是一个软目标,JVM会尽力实现这个目标。默认没有最大期望停顿时间。
-XX:MaxHeapSize=size设置堆分配的最大值,单位字节。这个值必须要大于2M。默认值是在运行时根据系统配置来定。作为生产服务的部署,通常-XX:InitialHeapSize-XX:MaxHeapSize选项指定为相同的值。具体可以参考Java虚拟机垃圾回收优化指南
-XX:MaxHeapFreeRatio=percent设置一次GC之后允许堆的最大空闲百分比(0 到 100)。如果空闲的堆空间大于这个值,那么堆的空间会被缩小。默认值是70%。
-XX:MaxMetaspaceSize=size设置元空间的最大内存值。默认该值不做限制,仅仅受限于系统分配给应用的可用物理内存。
-XX:MaxNewSize=size设置年轻代的最大值,单位字节。默认会自动根据最优性能来选择。
-XX:MaxTenuringThreshold=threshold设置自适应GC大小的最大占用阀值。最大值是15。吞吐量优先(并行)的垃圾收集器默认值是15,CMS垃圾收集器默认是6。
-XX:MetaspaceSize=size设置第一次触发GC的元空间大小。这个触发GC的阀值会根据元空间的使用量进行增加或减少。默认值由平台决定。
-XX:MinHeapFreeRatio=percent设置GC之后的最小允许的堆空闲百分比(0 到 100)。如果堆空闲空间低于该值,则堆空间会自动扩展。默认值是40%。
-XX:NewRatio=ratio设置年轻代和老年代的比例。默认值是2。
-XX:NewSize=size设置初始年轻代的大小,单位字节。年轻代区域用来保存新对象。这个区域的GC会比其它区域要频繁。如果年轻代设置的太小,那么会有大量的minor gc发生。如果这个值设置的太大,那么只会有full gc发生,这会消耗很长的时间。Oracle建议年轻代设置为整个堆的四分之一到一半之间。
-XX:ParallelGCThreads=threads设置年轻代和老年代的parallel垃圾收集器可用线程数。默认值是JVM可用的CPU核数。
-XX:+PrintGC启用在每次GC的时候输出信息,默认关闭。
-XX:+PrintGCDetails启动在每次GC的时候输出详细日志。默认关闭。
-XX:+ScavengeBeforeFullGC启用每次full GC前执行一次年轻代GC。该选项默认启用。Oracle建议不要关闭该选项,因为在FULL GC之前清理年轻代可以减少从老年代到年轻代的可达对象数量。如果想禁用该选项,可以指定-XX:-ScavengeBeforeFullGC
-XX:SurvivorRatio=ratio设置伊甸园和幸存者空间的比例。默认值是8。
-XX:TargetSurvivorRatio=percent设置年轻代GC之后的幸存者空间的期望使用百分比(0 到100)。默认值是50%。
-XX:TLABSize=size设置线程分配(TLAB)的初始大小,单位字节。如果该选项设置为0,那么JVM会自动选择初始大小。
-XX:+UseAdaptiveSizePolicy启用自适应分代大小。该选项默认启用。若要关闭该功能,指定-XX:-UseAdaptiveSizePolicy并且明确设置可用的内存大小(参考-XX:SurvivorRatio选项)。
-XX:+UseCMSInitiatingOccupancyOnly启用该选项后,占用空间的大小是CMS垃圾收集器初始化时候的唯一判定标准,该选项默认禁用。
-XX:+UseConcMarkSweepGC使老年代使用CMS垃圾回收器。Oracle建议当吞吐量优先的垃圾收集器(-XX:+UseParallelGC)无法满足应用延迟需求的时候,使用CMS垃圾收集器。G1垃圾收集器是另外一种选择。
这个选项默认禁用,垃圾收集器会根据机器的配置和JVM的类型来自动选择。当这个选项启用的时候,-XX:+UseParNewGC选项会自动启用,并且不应该去禁用它,因为下列的组合选项在JDK8里面被废弃了:-XX:+UseConcMarkSweepGC -XX:-UseParNewGC
-XX:+UseG1GC启用G1垃圾收集器。这是一个服务器类型的垃圾收集器,是为了具有多核处理器和大内存的服务器。G1垃圾收集器很大概率满足GC的停顿时间要求,同时保持一个很好的吞吐量。G1垃圾收集器适合那些具有超大堆空间(6GB左右或更多)且对GC延迟需求很高(低于0.5秒的稳定且可预测的暂停时间)的应用。
该选项默认禁用,垃圾收集器会根据机器配置和JVM类型来自动选择。
-XX:+UseGCOverheadLimit启用该选项后,会限制GC的时间,如果GC时间超过限制,则会抛出OutOfMemoryError异常。这个选项默认启用,如果大于98%的本地时间都用来进行垃圾收集,且只有小于2%的堆被释放,parallel垃圾收集器会抛出OutOfMemoryError异常。可以通过-XX:-UseGCOverheadLimit选项关闭该功能。
-XX:+UseNUMA启用该选项后,应用可以在具有NUMA架构的主机上使用低延迟的内存,从而优化应用性能。该选项默认禁用,无任何NUMA优化。只有当指定-XX:+UseParallelGC的时候,该选项才有效。
-XX:+UseParallelGC启用并行垃圾收集器,该收集器也常被称为吞吐量优先的垃圾收集器,该收集器会使用多个处理器来提升性能。
默认该选项禁用,垃圾收集器会根据机器配置和JVM类型来自动选择。如果选项启用,那么-XX:+UseParallelOldGC选项也会自动启用,除非你显式的禁用掉它。
-XX:+UseParallelOldGC在老年代启用并行GC。默认禁用。
-XX:+UseParNewGC为年轻代启用并行GC。该选项默认禁用。当设置-XX:+UseConcMarkSweepGC选项的时候,该选项会自动启用。使用该选项的同时不指定-XX:+UseConcMarkSweepGC选项在JDK8中被废弃掉了。
-XX:+UseSerialGC启用串行GC。串行GC最适合小而简单的应用,不需要垃圾回收的特定功能。该选项默认禁用,垃圾回收器会根据机器配置和JVM类型自动选择。
-XX:+UseSHM在Linux系统中,启用该选项JVM会使用共享内存来设置巨页。
-XX:+UseTLAB在年轻代启用线程本地分配(TLABs)。这个选项默认启用。指定-XX:-UseTLAB来禁用该选项。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值