java jvm 《10》 GC 垃圾回收器 几种 类型介绍 参数介绍 和jdk版本 更新情况

231 阅读10分钟

目录

行为选择 Behavioral Options

垃圾优先(G1)垃圾收集选项  Garbage First (G1) Garbage Collection Options

性能选项  Performance Options

调试选项  Debugging Options


行为选择 Behavioral Options

 

选项和默认值描述
-XX:-AllowUserSignalHandlers如果应用程序安装了信号处理程序,请不要抱怨。(仅与Solaris和Linux有关。)
-XX:AltStackSize = 16384备用信号堆栈大小(以KB为单位)。(仅与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错误之前,VM在GC中花费的时间比例。(在6中介绍。)
-XX:+ UseLWPS同步使用基于LWP而不是基于线程的同步。(在1.4.0中引入。仅与Solaris有关。)
-XX:-UseParallelGC使用并行垃圾收集进行清理。(在1.4.1中引入)
-XX:-UseParallelOldGC将并行垃圾回收用于完整回收。启用此选项会自动设置-XX:+ UseParallelGC。(在5.0 Update 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:否]
-XX:+ UseThreadPriorities使用本机线程优先级。
-XX:+ UseVMInterruptibleIO在EINTR之前或与之进行I / O操作的线程中断导致OS_INTRPT。(在6中引入。仅与Solaris有关。)




垃圾优先(G1)垃圾收集选项  Garbage First (G1) Garbage Collection Options

 

选项和默认值描述
-XX:+ UseG1GC使用垃圾优先(G1)收集器
-XX:MaxGCPauseMillis = n设置最大GC暂停时间的目标。这是一个软目标,JVM将尽最大的努力来实现它。
-XX:InitiatingHeapOccupancyPercent = n启动并发GC周期的(整个)堆占用百分比。GC使用它来触发GC,该GC基于整个堆的占用来触发并发GC周期,而不仅仅是世代之一(例如,G1)。值为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设置保留为虚假上限的堆数量,以减少升级失败的可能性。预设值为10。
-XX:G1HeapRegionSize = n使用G1,Java堆可细分为大小一致的区域。这将设置各个细分的大小。该参数的默认值是根据堆大小按人机工程学确定的。最小值为1Mb,最大值为32Mb。




性能选项  Performance Options

 

选项和默认值描述
-XX:+ AggressiveOpts打开预期在即将发布的版本中默认的点性能编译器优化。(在5.0 Update 6中引入。)
-XX:CompileThreshold = 10000编译之前方法调用/分支的数量[-客户端:1,500]
-XX:LargePageSizeInBytes = 4m设置用于Java堆的大页面大小。(在1.4.0更新1中引入。)[amd64:2m。]
-XX:MaxHeapFreeRatio = 70GC之后避免收缩的最大可用堆百分比。
-XX:MaxNewSize =大小新一代的最大大小(以字节为单位)。从1.4开始,MaxNewSize作为NewRatio的函数进行计算。[1.3.1 Sparc:32m;1.3.1 x86:2.5m。]
-XX:MaxPermSize = 64m永久代的大小。[5.0及更高版本:64位VM扩展了30%;1.4 amd64:96m;1.3.1-客户:32m。]
-XX:MinHeapFreeRatio = 40GC之后避免扩展的最小堆可用百分比。
-XX:NewRatio = 2新旧大小比例。[Sparc -client:8;x86服务器:8; x86 -client:12。]-client:4(1.3)8(1.3.1 +),x86:12]
-XX:NewSize = 2m新一代的默认大小(以字节为单位)[5.0及更高版本:64位VM扩展了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伊甸园/幸存者空间大小的比率[Solaris amd64:6; 1.3.1中的Sparc: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:否]
-XX:+ UseFastAccessorMethods使用Get Field的优化版本。
-XX:-UseISM使用紧密共享内存。[非Solaris平台不接受。]有关详细信息,请参见Intimate Shared Memory
-XX:+ UseLargePages使用大页内存。(在5.0更新5中引入。)有关详细信息,请参见Java对大内存页面的支持
-XX:+使用MPSS对堆使用多页大小支持w / 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对可以使用纯ASCII表示的字符串使用byte []。(在Java 6 Update 21 Performance Release中引入)  
-XX:+ OptimizeStringConcat尽可能优化String串联操作。(在Java 6 Update 20中引入)  




调试选项  Debugging Options

 

选项和默认值描述
-XX:-CITime打印在JIT编译器中花费的时间。(在1.4.0中引入。)
-XX:ErrorFile =。/ hs_err_pid .log如果发生错误,请将错误数据保存到该文件。(在6中介绍。)
-XX:-扩展DTraceProbes启用影响性能的dtrace探针。(在6中引入。仅与Solaris有关。)
-XX:HeapDumpPath =。/ java_pid .hprof堆转储的目录或文件名的路径。可管理的。(在1.4.2更新12、5.0更新7中引入。)
-XX:-HeapDumpOnOutOfMemoryError引发java.lang.OutOfMemoryError时,将堆转储到文件中。可管理的。(在1.4.2更新12、5.0更新7中引入。)
-XX:OnError =“ <cmd参数>; <cmd参数>”对致命错误运行用户定义的命令。(在1.4.2更新9中引入。)
-XX:OnOutOfMemoryError =“ <cmd参数>; <cmd参数>”第一次抛出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:-打印编译编译方法时显示消息。
-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:-TraceClass卸载跟踪类的卸载。
-XX:-TraceLoaderConstraints跟踪记录加载程序约束。(在6中介绍。)
-XX:+ PerfDataSaveToFile在退出时保存jvmstat二进制数据。
-XX:ParallelGCThreads = n设置新旧并行垃圾收集器中的垃圾收集线程数。缺省值随运行JVM的平台而异。
-XX:+ UseCompressedOops启用压缩指针(对象引用表示为32位偏移量而不是64位指针),以优化Java堆大小小于32gb的64位性能。
-XX:+总是PreTouch在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:<文件名>将GC详细输出记录到指定文件。详细输出由常规详细GC标志控制。
-XX:-UseGCLogFileRotation启用GC日志循环,需要-Xloggc。
-XX:NumberOfGClogFiles = 1设置轮换日志时使用的文件数,必须> =1。轮换的日志文件将使用以下命名方案:<文件名> .0,<文件名> .1,...,<文件名> .n- 1。
-XX:GCLogFileSize = 8K日志将旋转的位置的日志文件的大小必须> = 8K。