JVM Parameters
推荐内容:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABDJJFI
JVM Paramters
声明:本文基于JDK1.8所做说明
JVM参数 共分为三种:
- 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容,例如(java --help)
- 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容,例如(java -X)
- 非Stable参数(-XX),此类参数各个jvm实现会有所不同,这些都是不稳定的并且不推荐在生产环境中使用。将来可能会随时取消,需要慎重使用;上都被实现),而且如果在新版本有什么改动也不会发布通知。
对响应时间要求很高的系统来说,良好掌握JVM关于GC调优的参数是很重要的。比如一个高流量地延迟的电子交易平台,他要求的响应时间都是毫秒级的。要获得适合的参数组合需要大量的分析和不断的尝试,更依赖于交易系统的特性。
关于JVM选项的几点:
-
布尔型参数选项:-XX:+ 打开, -XX:- 关闭。(比如-XX:+PrintGCDetails)
-
数字型参数选项通过-XX:=设定。数字可以是m/M(兆字节),k/K(千字节),g/G(G字节)。
比如:32K表示32768字节。(比如-XX:HeapDumpPath=./java_pid.hprof) -
字符行参数选项通过-XX:=设定,通常用来指定一个文件,路径,或者一个命令列表。(比如-XX:+PrintGCDetails)如果你想查看当前应用使用的JVM参数,你可以使用:ManagementFactory.getRuntimeMXBean().getInputArguments()。
Standard Options
| Option and Default Value | Description |
|---|---|
| -agentlib:libname[=options] | |
| -agentpath:pathname[=options] | |
| -client | |
| -Dproperty***=***value | |
| -d32 | |
| -d64 | |
| -disableassertions[:[packagename]…[:classname] | |
| -da[:[packagename]…[:classname] | |
| -disablesystemassertions | |
| -dsa | |
| -enableassertions[:[packagename]…[:classname] | |
| -ea[:[packagename]…[:classname] | |
| -enablesystemassertions | |
| -esa | |
| -help | |
| -jar filename | |
| -javaagent:jarpath[=options] | |
| -jre-restrict-search | |
| -no-jre-restrict-search | |
| -server | |
| -showversion | |
| -splash:imgname | |
| -verbose:class | |
| -verbose:gc | |
| -verbose:jni | |
| -version | |
| -version:release |
Non-Standard Options
| Option and Default Value | Description |
|---|---|
| -X | |
| -Xbatch | |
| -Xbootclasspath:path | |
| -Xbootclasspath/a:path | |
| -Xbootclasspath/p:path | |
| -Xcheck:jni | |
| -Xcomp | |
| -Xdebug | |
| -Xdiag | |
| -Xfuture | |
| -Xint | |
| -Xinternalversion | |
| -Xloggc:filename | |
| -Xmaxjitcodesize=size | |
| -Xmixed | |
| -Xmnsize | |
| -Xmssize | |
| -Xmxsize | |
| -Xnoclassgc | |
| -Xprof | |
| -Xrs | |
| -Xshare:mode | |
| -XshowSettings:category | |
| -Xsssize | |
| -Xusealtsigs | |
| -Xverify:mode |
Advanced Runtime Options
| Option and Default Value | Description |
|---|---|
| -XX:+CheckEndorsedAndExtDirs | |
| -XX:+DisableAttachMechanism | |
| -XX:ErrorFile=filename | |
| -XX:+FailOverToOldVerifier | |
| -XX:+FlightRecorder | |
| -XX:-FlightRecorder | |
| -XX:FlightRecorderOptions=parameter=value | |
| -XX:LargePageSizeInBytes=size | |
| -XX:MaxDirectMemorySize=size | |
| -XX:NativeMemoryTracking=mode | |
| -XX:ObjectAlignmentInBytes=alignment | |
| -XX:OnError=string | |
| -XX:OnOutOfMemoryError=string | |
| -XX:+PerfDataSaveToFile | |
| -XX:-PreferContainerQuotaForCPUCount | |
| -XX:+PrintCommandLineFlags | |
| -XX:+PrintContainerInfo | |
| -XX:+PrintNMTStatistics | |
| -XX:+RelaxAccessControlCheck | |
| -XX:+ResourceManagement | |
| -XX:ResourceManagementSampleInterval=value(milliseconds) | |
| -XX:SharedArchiveFile=path | |
| -XX:SharedClassListFile=file_name | |
| -XX:+ShowMessageBoxOnError | |
| -XX:StartFlightRecording=parameter=value | |
| -XX:ThreadStackSize=size | |
| -XX:+TraceClassLoading | |
| -XX:+TraceClassLoadingPreorder | |
| -XX:+TraceClassResolution | |
| -XX:+TraceClassUnloading | |
| -XX:+TraceLoaderConstraints | |
| -XX:+UnlockCommercialFeatures | |
| -XX:+UseAltSigs | |
| -XX:+UseAppCDS | |
| -XX:-UseBiasedLocking | |
| -XX:-UseCompressedOops | |
| -XX:-UseContainerSupport | |
| -XX:+UseHugeTLBFS | |
| -XX:+UseLargePages | |
| -XX:+UseMembar | |
| -XX:+UsePerfData | |
| -XX:+UseTransparentHugePages | |
| -XX:+AllowUserSignalHandlers |
Advanced JIT Compiler Options
| Option and Default Value | Descritpion |
|---|---|
| -XX:+AggressiveOpts | |
| -XX:AllocateInstancePrefetchLines=lines | |
| -XX:AllocatePrefetchDistance=size | |
| -XX:AllocatePrefetchInstr=instruction | |
| -XX:AllocatePrefetchLines=lines | |
| -XX:AllocatePrefetchStepSize=size | |
| -XX:AllocatePrefetchStyle=style | |
| -XX:+BackgroundCompilation | |
| -XX:CICompilerCount=threads | |
| -XX:CodeCacheMinimumFreeSpace=size | |
| -XX:CompileCommand=command,method[,option] | |
| -XX:CompileCommandFile=filename | |
| -XX:CompileOnly=methods | |
| -XX:CompileThreshold=invocations | |
| -XX:+DoEscapeAnalysis | |
| -XX:InitialCodeCacheSize=size | |
| -XX:+Inline | |
| -XX:InlineSmallCode=size | |
| -XX:+LogCompilation | |
| -XX:MaxInlineSize=size | |
| -XX:MaxNodeLimit=nodes | |
| -XX:MaxTrivialSize=size | |
| -XX:+OptimizeStringConcat | |
| -XX:+PrintAssembly | |
| -XX:+PrintCompilation | |
| -XX:+PrintInlining | |
| -XX:ReservedCodeCacheSize=size | |
| -XX:RTMAbortRatio=abort_ratio | |
| -XX:RTMRetryCount=number_of_retries | |
| -XX:-TieredCompilation | |
| -XX:+UseAES | |
| -XX:+UseAESIntrinsics | |
| -XX:+UseCodeCacheFlushing | |
| -XX:+UseCondCardMark | |
| -XX:+UseRTMDeopt | |
| -XX:+UseRTMLocking | |
| -XX:+UseSHA | |
| -XX:+UseSHA1Intrinsics | |
| -XX:+UseSHA256Intrinsics | |
| -XX:+UseSHA512Intrinsics | |
| -XX:+UseSuperWord |
Advanced Serviceability Options
| Option and Default Value | Description |
|---|---|
| -XX:+ExtendedDTraceProbes | |
| -XX:+HeapDumpOnOutOfMemoryError | |
| -XX:HeapDumpPath=path | |
| -XX:LogFile=path | |
| -XX:+PrintClassHistogram | |
| -XX:+PrintConcurrentLocks | |
| -XX:+UnlockDiagnosticVMOptions |
Advanced Garbage Collection Options
| Option and Default Value | Description |
|---|---|
| -XX:ActiveProcessorCount=x | |
| -XX:+AggressiveHeap | |
| -XX:+AlwaysPreTouch | |
| -XX:+CMSClassUnloadingEnabled | |
| -XX:CMSExpAvgFactor=percent | |
| -XX:CMSInitiatingOccupancyFraction=percent | |
| -XX:+CMSScavengeBeforeRemark | |
| -XX:CMSTriggerRatio=percent | |
| -XX:ConcGCThreads=threads | |
| -XX:+DisableExplicitGC | |
| -XX:+ExplicitGCInvokesConcurrent | |
| -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses | |
| -XX:G1HeapRegionSize=size | |
| -XX:+G1PrintHeapRegions | |
| -XX:G1ReservePercent=percent | |
| -XX:InitialHeapSize=size | |
| -XX:InitialRAMPercentage=percent | |
| -XX:InitialSurvivorRatio=ratio | |
| -XX:InitiatingHeapOccupancyPercent=percent | |
| -XX:MaxGCPauseMillis=time | |
| -XX:MaxHeapSize=size | |
| -XX:MaxHeapFreeRatio=percent | |
| -XX:MaxMetaspaceSize=size | |
| -XX:MaxNewSize=size | |
| -XX:MaxRAMPercentage=percent | |
| -XX:MaxTenuringThreshold=threshold | |
| -XX:MetaspaceSize=size | |
| -XX:MinHeapFreeRatio=percent | |
| -XX:MinRAMPercentage=percent | |
| -XX:NewRatio=ratio | |
| -XX:NewSize=size | |
| -XX:ParallelGCThreads=threads | |
| -XX:+ParallelRefProcEnabled | |
| -XX:+PrintAdaptiveSizePolicy | |
| -XX:+PrintGC | |
| -XX:+PrintGCApplicationConcurrentTime | |
| -XX:+PrintGCApplicationStoppedTime | |
| -XX:+PrintGCDateStamps | |
| -XX:+PrintGCDetails | |
| -XX:+PrintGCTaskTimeStamps | |
| -XX:+PrintGCTimeStamps | |
| -XX:+PrintStringDeduplicationStatistics | |
| -XX:+PrintTenuringDistribution | |
| -XX:+ScavengeBeforeFullGC | |
| -XX:SoftRefLRUPolicyMSPerMB=time | |
| -XX:StringDeduplicationAgeThreshold=threshold | |
| -XX:SurvivorRatio=ratio | |
| -XX:TargetSurvivorRatio=percent | |
| -XX:TLABSize=size | |
| -XX:+UseAdaptiveSizePolicy | |
| -XX:+UseCMSInitiatingOccupancyOnly | |
| -XX:+UseConcMarkSweepGC | |
| -XX:+UseG1GC | |
| -XX:+UseGCOverheadLimit | |
| -XX:+UseNUMA | |
| -XX:+UseParallelGC | |
| -XX:+UseParallelOldGC | |
| -XX:+UseParNewGC | |
| -XX:+UseSerialGC | |
| -XX:+UseSHM | |
| -XX:+UseStringDeduplication | |
| -XX:+UseTLAB |
Deprecated and Removed Options
| -Xincgc | |
|---|---|
| -Xrunlibname | |
| -XX:CMSIncrementalDutyCycle=percent | |
| -XX:CMSIncrementalDutyCycleMin=percent | |
| -XX:+CMSIncrementalMode | |
| -XX:CMSIncrementalOffset=percent | |
| -XX:+CMSIncrementalPacing | |
| -XX:CMSIncrementalSafetyFactor=percent | |
| -XX:CMSInitiatingPermOccupancyFraction=percent | |
| -XX:MaxPermSize=size | |
| -XX:PermSize=size | |
| -XX:+UseSplitVerifier | |
| -XX:+UseStringCache |
随时更新