jvm參數(全)

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

 

注意:Garbage First (G1)收集器是java6之後加入的。

 

1 行爲參數

選項和默認值

值描述

-XX:-AllowUserSignalHandlers

允許用戶在應用中捕捉信號 (只和SolarisLinux有關)

-XX:AltStackSize=16384

備用信號棧大小 (Kbytes)。(只Solaris,從5.0刪除)

-XX:-DisableExplicitGC

禁止調用System.gc(), JVM 依然在必要時執行垃圾回收。

-XX:+FailOverToOldVerifier

當新的類型檢查器失敗時轉移到舊的類型檢查器上(從6.0開始引進)

-XX:+HandlePromotionFailure

年輕代不擔保完全提升活所有對象。(1.4.2 update 11引進)(5.0和更早版本是false

-XX:+MaxFDLimit

文件描述符設置到最大(只Solaris

-XX:PreBlockSpin=10

控制多線程自旋鎖優化的自旋次數 (1.4.2引進)

-XX:-RelaxAccessControlCheck

在類校驗裏,放鬆訪問控制檢查(6引進)

-XX:+ScavengeBeforeFullGC

full GC之前先youngGC (1.4.1引進)

-XX:+UseAltSigs

爲了防止與其他發送信號的應用程序衝突,允許使用候補信號替代 SIGUSR1SIGUSR2(1.3.1 update 9引進,1.4.1Solaris)

-XX:+UseBoundThreads

用戶級別線程綁定到核心線程(只Solaris

-XX:-UseConcMarkSweepGC

老年代使用CMS收集(1.4.1引進)

-XX:+UseGCOverheadLimit

限制GC的運行時間。如果GC耗時過長,就拋OOM(6引進)

-XX:+UseLWPSynchronization

使用輕量級進程(內核線程LWP-based)替換線程同步。( 1.4.0引進,只Solaris)

-XX:-UseParallelGC Use

策略爲新生代使用並行清除,年老代使用單線程Mark-Sweep-Compact的垃圾收集器。

 (1.4.1引進)

-XX:-UseParallelOldGC

策略爲老年代和新生代都使用並行清除的垃圾收集器。開啓這個選項,自動開啓-XX:+UseParallelGC (5.0 update 6引進)

-XX:-UseSerialGC

使用串行垃圾收集. (5.0引進)

-XX:-UseSpinning

啓用多線程自旋鎖優化 (1.4.25.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

I/O進入時或之前線程中斷,導致OS_INTRPT6引進,只Solaris

 

2 Garbage First (G1)

選項和默認值

描述

-XX:+UseG1GC

使用Garbage First (G1) 收集器

-XX:MaxGCPauseMillis=n

設置最大暫停時間目標。這是軟目標,JVM盡力達到這個目標。

-XX:InitiatingHeapOccupancyPercent=45

整個堆佔用多少百分比,開始併發GC週期。整個堆,不是一個代。(例如G1)。0表示恆定GC週期。

-XX:ConcGCThreads=n

併發收集器線程數,默認值隨機器變化。

-XX:G1ReservePercent=10

設置預留堆數量,作爲false上限,以減少提升失敗的機率。

-XX:G1HeapRegionSize=n

使用G1堆被分成相等大小區域。這設置每個區域大小。默認值根據堆大小進行功效學計算出來。最小1M,最大32M

 

3 性能參數

選項和默認值

描述

-XX:+AggressiveOpts

啓用JVM開發團隊最新的調優成果。例如編譯優化,偏向鎖,並行年老代收集等(5.0 update 6.0引進,默認啓動)

-XX:CompileThreshold=10000

通過JIT編譯器,將方法編譯成機器碼的觸發閥值,可以理解爲調用方法的次數,例如調1000次,將方法編譯爲機器碼[-client: 1,500]

-XX:LargePageSizeInBytes=4m

設置java堆使用的內存頁最大值(1.4.0 update 1引入) [amd64: 2m.]

-XX:MaxHeapFreeRatio=70

堆最大空閒百分比,大於這個值會自動收縮堆大小

-XX:MaxNewSize=size

新生代最大值(bytes)。從1.4開始用NewRatio 計算[1.3.1 Sparc: 32m; 1.3.1 x86: 2.5m.]

-XX:MaxPermSize=64m

永久帶大小 [5.0 和以上版本: 64 bit 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

新生代默認大小(bytes) [5.0和以上版本: 64 bit VMs增加預設值的30%; x86: 1m; x86, 5.0 and older: 640k]

-XX:ReservedCodeCacheSize=32m

設置代碼緩存的最大值,編譯時用(bytes) [Solaris 64-bit, amd64, -server x86: 48m; 1.5.0_06和更早版本,Solaris 64-bit ,amd64: 1024m.]

-XX:SurvivorRatio=8

伊甸園/生還者比例[Solaris amd64: 6; Sparc ,1.3.1: 25; 其他Solaris平臺, 5.0 和更早版本: 32]

-XX:TargetSurvivorRatio=50

清理之後,希望生還者區使用的百分比。

-XX:ThreadStackSize=512

線程棧大小(Kbytes). (0是默認大小) [Sparc: 512; Solaris x86: 320 (5.0和之前是256); Sparc 64 bit: 1024; Linux amd64: 1024 (5.0和更早是0); 其他0.]

-XX:+UseBiasedLocking

啓用偏向鎖。(看java調優白皮書的例子5(5.0 update 6引入) [5.0: false]

-XX:+UseFastAccessorMethods

使用優化版本的基本類型get方法

-XX:-UseISM

啓用solaris系統的ISM

-XX:+UseLargePages

啓用大內存分頁( 5.0 update 5引入) 看《Java Support for Large Memory Pages

-XX:+UseMPSS

啓用solarisMPSS(多內存頁大小),支持w/4mb,不能與ISM同時使用(1.4.0 update 1引入, Solaris 9和更新版本有關.) [1.4.1和更早版本: false]

-XX:+UseStringCache

使用一般緩存分配String

-XX:AllocatePrefetchLines=1

用預取指令分配一個對象,如果最後分配是對象是1,如果是數組數3

-XX:AllocatePrefetchStyle=1

預取指令的產生代碼風格:

0-沒有預取指令,

1-每一次分配內存就執行預取指令,

2-當執行預取代碼指令時,用TLAB分配水印指針指向門。

-XX:+UseCompressedStrings

byte[] 代替字符串(從Java6 Update 21開始引入)

-XX:+OptimizeStringConcat

可能的話優化字符串連接操作(Java 6 Update 20引入)

 

4 調試參數

 

選項和默認值

描述

-XX:-CITime

打印花費在JIT編譯花費的時間Prints time spent in JIT Compiler. (1.4.0引進)

-XX:ErrorFile=./hs_err_pid<pid>.log

如果發生錯誤,報錯錯誤數據到這個文件(6引入)

-XX:-ExtendedDTraceProbes

驅動性能影響(performance-impacting)動態跟蹤探測器 (Introduced in 6引入。只Solaris)

-XX:HeapDumpPath=./java_pid<pid>.hprof

堆轉儲文件的路徑或文件名。可管理 ( 1.4.2 update 12, 5.0 update 7引入)

-XX:-HeapDumpOnOutOfMemoryError

OOM時,轉儲堆文件。可管理 (1.4.2 update 12, 5.0 update 7引入)

-XX:OnError="<cmd args>;<cmd args>"

當發生致命錯誤時,執行用戶定義命令(1.4.2 update 9引入)

-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"

當第一次OOM時執行用戶定義命令 ( 1.4.2 update 12, 6引入)

-XX:-PrintClassHistogram

Windows, ctrl-breakLinux下是執行kill -3(發送SIGQUIT信號)時,打印class柱狀圖。jmap -histo提供相同功能(1.4.2引入)

-XX:-PrintConcurrentLocks

Ctrl-Break 打印java.util.concurrent 鎖, jstack –l提供相同功能(6引入)

-XX:-PrintCommandLineFlags

打印命令行標記 (5.0引入)

-XX:-PrintCompilation

當一個方法被編譯,答應信息

-XX:-PrintGC

GC時,打印信息。

-XX:-PrintGCDetails

GC時打印詳細信息 (1.4.0引入)

-XX:-PrintGCTimeStamps

GC時打印時間戳 (1.4.0引入)

-XX:-PrintTenuringDistribution

打印對象存活年齡信息

-XX:-TraceClassLoading

打印類加載

-XX:-TraceClassLoadingPreorder

按照引用順序打印所有類加載。 (1.4.2引入)

-XX:-TraceClassResolution

打印常量池Trace constant pool resolutions. (1.4.2引入)

-XX:-TraceClassUnloading

打印卸載類

-XX:-TraceLoaderConstraints

打印類加載策略變化 ( 6引入)

-XX:+PerfSaveDataToFile

當推出時,保存jvmstat二進制數據。

-XX:ParallelGCThreads=n

給年輕代和老年代平行垃圾收集器,設置垃圾收集線程數默認值隨機器變化

-XX:+UseCompressedOops

開啓壓縮指針,爲了優化java堆小於32G64-bit性能(對象引用指針,32 bit 換成64-bit指針)

-XX:+AlwaysPreTouch

JVM初始化時預先對Java堆進行預先摸底(Pre-touch),堆的每個頁初始化時滿足需求,而不是應用執行時遞增。

-XX:AllocatePrefetchDistance=n

設置對象分配的預取距離。將要寫的在這個距離被預抓取到緩存的新對象的內存值。在最後分配的對象地址之前每個java線程有它自己的分配點。默認值隨機器變化。

-XX:InlineSmallCode=n

只內聯以前編譯方法,如果它生成的本地代碼大小比這小。默認值隨機器變化。

-XX:MaxInlineSize=35

內聯方法的最大字節碼大小

-XX:FreqInlineSize=n

一個頻繁執行的內聯方法的字節碼大小。默認值隨機器變化。

-XX:LoopUnrollLimit=n

當中間表示節點數量小於這個值,展開循環體。在服務器編譯之前的限制是這個值的功能,不是真實值。默認值隨機器變化。

-XX:InitialTenuringThreshold=7

設置初始週期閥值,用於平行年輕收集器的自適應GC調整大小。週期閥值是對象從youngGC生還、提升到老年代的次數。

-XX:MaxTenuringThreshold=n

設置最大週期閥值,用於自適應GC調整大小。當前最大值是15。平行收集器是15CMS4

-Xloggc:<filename>

指定GC日誌文件。日誌由正常的日誌參數控制。

-XX:-UseGCLogFileRotation

開啓GC日誌分割。必須設置-Xloggc

-XX:NumberOfGClogFiles=1

當分割日誌時設置文件數量,必須>= 1。分割的日誌使用命名規則<filename>.0, <filename>.1, ..., <filename>.n-1.

-XX:GCLogFileSize=8K

日誌大小在這個大小時被分割。必須 >= 8K

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章