美文网首页java jvm
jvm 《一》调优 一些有用的-XX选项 官方 api 文档介绍

jvm 《一》调优 一些有用的-XX选项 官方 api 文档介绍

作者: a_Ygygs_Dxdsr_X | 来源:发表于2019-02-19 13:23 被阅读0次

    一些有用的-XX选项

    对于带有-server的Solaris Sparc,Java SE 6列出了缺省值。某些选项可能因架构/ OS / JVM版本而异。描述中列出了具有不同默认值的平台。

    -XX:+<option>使用-XX:-<option>.Disa 打开和关闭布尔选项

    数字选项设置为-XX:<option>=<number>。数字可以包括兆字节的“m”或“M”,千字节的“k”或“K”以及千兆字节的“g”或“G”(例如,32k与32768相同)。

    字符串选项设置有-XX:<option>=<string>,通常用于指定文件,路径或命令列表

    标记为可管理的标志可通过JDK管理界面(com.sun.management.HotSpotDiagnosticMXBean API)以及JConsole动态写入。在监视和管理Java SE 6平台应用程序中,可管理标志也可以通过jinfo -flag设置。

    以下选项分为不同类别。

    行为选项会更改VM的基本行为。

    垃圾优先(G1)垃圾收集选项

    性能调整选项是旋钮,可用于调整VM性能。

    调试选项通常可以跟踪,打印或输出VM信息。

    行为选择

    选项和默认值 描述

    -XX:-AllowUserSignalHandlers 如果应用程序安装了信号处理程序,请不要抱怨。(仅与Solaris和Linux相关。)

    -XX:AltStackSize = 16384 备用信号堆栈大小(以千字节为单位)。(仅与Solaris相关,从5.0中删除。)

    -XX:-DisableExplicitGC 默认情况下,启用对System.gc()的调用(-XX:-DisableExplicitGC)。使用-XX:+ DisableExplicitGC禁用对System.gc()的调用。请注意,JVM在必要时仍会执行垃圾回收。

    -XX:+ FailOverToOldVerifier 新类型检查程序失败时故障转移到旧验证程序。(在6中引入)

    -XX:+ HandlePromotionFailure 最年轻的一代系列不需要保证所有活动对象的完全升级。(在1.4.2更新11中引入)[5.0及更早版本:false。]

    -XX:+ MaxFDLimit 将文件描述符的数量转换为最大值。(仅与Solaris相关。)

    -XX:PreBlockSpin = 10 用于-XX的旋转计数变量:+ UseSpinning。控制在输入操作系统线程同步代码之前允许的最大旋转迭代。(在1.4.2中引入。)

    -XX:-RelaxAccessControlCheck 放宽验证程序中的访问控制检查。(在6中引入)

    -XX:+ ScavengeBeforeFullGC 在完整GC之前进行年轻一代GC。(在1.4.1中介绍。)

    -XX:+ UseAltSigs 对于VM内部信号,使用备用信号而不是SIGUSR1和SIGUSR2。(在1.3.1更新9中引入,1.4.1。仅与Solaris相关。)

    -XX:+ UseBoundThreads 将用户级线程绑定到内核线程。(仅与Solaris相关。)

    -XX:-UseConcMarkSweepGC 为旧一代使用并发标记扫描集合。(在1.4.1中引入)

    -XX:+ UseGCOverheadLimit 使用策略限制在引发OutOfMemory错误之前在GC中花费的VM时间的比例。(在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 使用具有StackMapTable属性的新类型检查器。(在5.0中引入。)[5.0:false]

    -XX:+ UseThreadPriorities 使用本机线程优先级。

    -XX:+ UseVMInterruptibleIO 在EINTR之前或与EINTR进行I / O操作的线程中断导致OS_INTRPT。(仅在Solaris中引入。仅与Solaris相关。)

    垃圾优先(G1)垃圾收集选项

    选项和默认值 描述

    -XX:+ UseG1GC 使用垃圾优先(G1)收集器

    -XX:MaxGCPauseMillis =n 设置最大GC暂停时间的目标。这是一个软目标,JVM将尽最大努力实现它。

    -XX:InitiatingHeapOccupancyPercent = n 启动并发GC循环的(整个)堆占用百分比。它由GC使用,它基于整个堆的占用而不仅仅是其中一代(例如,G1)触发并发GC循环。值0表示“执行恒定GC循环”。默认值为45。

    -XX:NewRatio =n 旧/新一代尺寸的比例。默认值为2。

    -XX:SurvivorRatio =n 伊甸园/幸存者空间大小的比率。默认值为8。

    -XX:MaxTenuringThreshold =n 终身临界值的最大值。默认值为15。

    -XX:ParallelGCThreads =n 设置垃圾收集器并行阶段使用的线程数。默认值因运行JVM的平台而异。

    -XX:ConcGCThreads =n 并发垃圾收集器将使用的线程数。默认值因运行JVM的平台而异。

    -XX:G1ReservePercent = n 设置保留为false上限的堆的数量,以减少促销失败的可能性。默认值为10。

    -XX:G1HeapRegionSize = n 使用G1,Java堆被细分为大小均匀的区域。这设置了各个子部门的大小。根据堆大小,符合人体工程学地确定此参数的默认值。最小值为1Mb,最大值为32Mb。

    性能选项

    选项和默认值 描述

    -XX:+ AggressiveOpts 打开预期在即将发布的版本中默认的点性能编译器优化。(在5.0更新中引入6.)

    -XX:CompileThreshold = 10000 编译前的方法调用/分支数[-client:1,500]

    -XX:LargePageSizeInBytes =4米 设置用于Java堆的大页面大小。(在1.4.0更新1中引入。)[amd64:2m。]

    -XX:MaxHeapFreeRatio = 70 GC后最大堆积空闲百分比以避免收缩。

    -XX:MaxNewSize =大小 新一代的最大大小(以字节为单位)。从1.4开始,MaxNewSize被计算为NewRatio的函数。[1.3.1 Sparc:32m; 1.3.1 x86:2.5米。]

    -XX:MaxPermSize =64米 永久代的大小。[5.0及更新版本:64位虚拟机缩放30%; 1.4 amd64:96m; 1.3.1 -client:32m。]

    -XX:MinHeapFreeRatio = 40 GC后最小的堆积百分比以避免扩展。

    -XX:NewRatio = 2 旧/新一代尺寸的比例。[Sparc -client:8; x86 -server:8; x86 -client:12。] - 客户端:4(1.3)8(1.3.1 +),x86:12]

    -XX:NewSize= 2 新一代的默认大小(以字节为单位)[5.0及更新版本:64位虚拟机缩放30%; x86:1米; x86,5.0及更早版本:640k]

    -XX:ReservedCodeCacheSize =32米 保留代码缓存大小(以字节为单位) - 最大代码缓存大小。[Solaris 64位,amd64和-server x86:2048m; 在1.5.0_06及更早版本中,Solaris 64位和amd64:1024m。

    -XX:SurvivorRatio = 8 伊甸园/幸存者空间大小的比例[Solaris amd64:6;Sparc在1.3.1:25; 5.0及更早版本中的其他Solaris平台:32]

    -XX:TargetSurvivorRatio = 50 清除后使用的幸存者空间的所需百分比。

    -XX:ThreadStackSize = 512 线程堆栈大小(以KB为单位)。(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 使用优化版本的Get <Primitive> Field。

    -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 使用JIT编译代码中生成的预取指令在最后一次对象分配后加载的高速缓存行数。如果最后分配的对象是实例,则默认值为1;如果是数组,则默认值为3。

    -XX:AllocatePrefetchStyle = 1 生成预取指令的代码样式。

    0 - 没有生成预取指令* d *,

    1 - 在每次分配后执行预取指令,

    2 - 在执行预取指令时使用TLAB分配水印指针到门。

    -XX:+ UseCompressedStrings 对字符串使用byte [],可以表示为纯ASCII。(在Java 6 Update 21性能发布中引入)

    -XX:+ OptimizeStringConcat 尽可能优化字符串连接操作。(在Java 6 Update 20中引入)

    调试选项

    选项和默认值 描述

    -XX:-CITime 打印在JIT编译器中花费的时间。(在1.4.0中引入。)

    -XX:ErrorFile= / hs_err_pid <PID> .log中 如果发生错误,请将错误数据保存到此文件中。(在6中引入)

    -XX:-ExtendedDTraceProbes 启用影响性能的dtrace探针。(仅在Solaris中引入。仅与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 =“<cmd args>; <cmd args>” 在致命错误上运行用户定义的命令。(在1.4.2更新9中引入)

    -XX:OnOutOfMemoryError =“<cmd args>; 

    <cmd args>” 首次抛出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 允许使用压缩指针(对象引用表示为32位偏移而不是64位指针),以优化64位性能,Java堆大小小于32gb。

    -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为默认值。

    -Xloggc:<文件名> 将GC详细输出记录到指定文件。详细输出由正常的详细GC标志控制。

    -XX:-UseGCLogFileRotation 启用GC日志轮换,需要-Xloggc。

    -XX:NumberOfGClogFiles = 1 设置旋转日志时要使用的文件数,必须> = 1.旋转的日志文件将使用以下命名方案,<filename> .0,<filename> .1,...,<filename> .n- 1。

    -XX:GCLogFileSize = 8K 日志将在何时旋转日志文件的大小必须> = 8K。

    这些就是 jvm 可以调节的全部选项了

    ok

    网络借阅文章:https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#Options

    ---------------------

    作者:a_Ygygs_Dxdsr_XdMss

    来源:CSDN

    原文:https://blog.csdn.net/weixin_42749765/article/details/87344192

    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

        本文标题:jvm 《一》调优 一些有用的-XX选项 官方 api 文档介绍

        本文链接:https://www.haomeiwen.com/subject/fsnaeqtx.html