1. 程式人生 > >jdk8 jvm配置引數說明

jdk8 jvm配置引數說明

這些選項是特定於Java HotSpot虛擬機器的通用選項。 -X

顯示所有可用-X選項的幫助

-Xbatch

禁用後臺編譯。預設情況下,JVM將該方法編譯為後臺任務,以直譯器模式執行該方法,直到後臺編譯完成。-Xbatch標誌禁用後臺編譯,以便所有方法的編譯作為前臺任務繼續進行,直到完成。

此選項相當於-XX:-BackgroundCompilation

-Xbootclasspath: path

指定以冒號(:)分隔的目錄,JAR檔案和ZIP存檔的列表,以搜尋引導類檔案。這些用於代替JDK中包含的引導類檔案。

不要部署使用此選項的應用程式覆蓋類rt.jar

,因為這違反了JRE二進位制程式碼許可證。

-Xbootclasspath / a: path

指定以冒號(:)分隔的目錄,JAR檔案和ZIP存檔的列表,以附加到預設引導類路徑的末尾。

不要部署使用此選項的應用程式覆蓋類rt.jar,因為這違反了JRE二進位制程式碼許可證。

-Xbootclasspath / p: path

指定以冒號(:)分隔的目錄,JAR檔案和ZIP存檔的列表,以預先新增到預設載入程式類路徑的前面。

不要部署使用此選項的應用程式覆蓋類rt.jar,因為這違反了JRE二進位制程式碼許可證。

-Xcheck:JNI

對Java Native Interface(JNI)函式執行其他檢查。

具體來說,它在處理JNI請求之前驗證傳遞給JNI函式的引數和執行時環境資料。遇到的任何無效資料都表明本機程式碼存在問題,在這種情況下,JVM將以無法恢復的錯誤終止。使用此選項時,預計效能會下降。

-Xcomp

在第一次呼叫時強制編譯方法。預設情況下,客戶端VM(-client)執行1,000個已解釋的方法呼叫,Server VM(-server)執行10,000個已解釋的方法呼叫以收集有效編譯的資訊。指定該-Xcomp選項會禁用已解釋的方法呼叫,從而以犧牲效率為代價來提高編譯效能。

您還可以使用該-XX:CompileThreshold選項在編譯之前更改已解釋的方法呼叫的數量

-Xdebug

什麼也沒做。提供向後相容性。

-Xdiag

顯示其他診斷訊息。

-Xfuture

啟用嚴格的類檔案格式檢查,以強制與類檔案格式規範緊密一致。鼓勵開發人員在開發新程式碼時使用此標誌,因為更嚴格的檢查將成為未來版本中的預設值。

-Xint

以僅解釋模式執行應用程式。禁用對本機程式碼的編譯,並且直譯器將執行所有位元組碼。暫時(JIT)編譯器提供的效能優勢在此模式下不存在。

-Xinternalversion

顯示比該-version選項更詳細的JVM版本資訊,然後退出。

-Xloggc: filename

設定應將重定向的GC事件資訊重定向到的檔案以進行日誌記錄。寫入此檔案的資訊類似於-verbose:gc自每個記錄事件之前的第一個GC事件以來經過的時間的輸出如果兩者都使用相同的命令,-Xloggc選項將覆蓋-verbose:gcjava

例:

-Xloggc:垃圾collection.log
-Xmaxjitcodesize =  size

指定JIT編譯程式碼的最大程式碼快取記憶體大小(以位元組為單位)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設的最大程式碼快取大小為240 MB; 如果使用該選項禁用分層編譯-XX:-TieredCompilation,則預設大小為48 MB:

-Xmaxjitcodesize =240米

此選項相當於-XX:ReservedCodeCacheSize

-Xmixed

除了熱方法之外,直譯器執行所有位元組碼,熱方法被編譯為本機程式碼。

-Xmn  尺寸

設定年輕代(託兒所)的堆的初始和最大大小(以位元組為單位)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。

堆的年輕代區域用於新物件。GC在該區域比在其他區域更頻繁地進行。如果年輕一代的規模太小,那麼將會進行大量的小型垃圾收集。如果大小太大,則只執行完整的垃圾收集,這可能需要很長時間才能完成。Oracle建議您將年輕代的大小保持在整個堆大小的一半到四分之一之間。

以下示例顯示如何使用各種單位將年輕代的初始和最大大小設定為256 MB:

-Xmn256m 
-Xmn262144k 
-Xmn268435456

取而代之的是的-Xmn,為年輕一代都設定堆的初始和最大大小選項,您可以使用-XX:NewSize設定初始大小和-XX:MaxNewSize設定的最大尺寸。

-Xms  大小

設定堆的初始大小(以位元組為單位)。該值必須是1024的倍數且大於1 MB。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。

以下示例顯示如何使用各種單位將分配的記憶體大小設定為6 MB:

-Xms6291456 
-Xms6144k 
-Xms6m

如果未設定此選項,則初始大小將設定為為舊代和年輕代分配的大小的總和。可以使用-Xmn選項或-XX:NewSize選項設定年輕代的堆的初始大小

-Xmx  尺寸

指定記憶體分配池的最大大小(以位元組為單位),以位元組為單位。該值必須是1024的倍數且大於2 MB。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。根據系統配置在執行時選擇預設值。對於伺服器部署,-Xms-Xmx經常設定為相同的值。請參閱Java SE HotSpot虛擬機器垃圾收集調整指南中的“人體工程學”部分http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html

以下示例顯示如何使用各種單位將分配的記憶體的最大允許大小設定為80 MB:

-Xmx83886080 
-Xmx81920k 
-Xmx80m

-Xmx選項相當於-XX:MaxHeapSize

-Xnoclassgc

禁用類的垃圾收集(GC)。這可以節省一些GC時間,從而縮短應用程式執行期間的中斷。

-Xnoclassgc在啟動時指定時,應用程式中的類物件將在GC期間保持不變,並始終被視為實時。這可能導致更多的記憶體被永久佔用,如果不小心使用,將導致記憶體不足異常。

-Xprof

配置正在執行的程式並將分析資料傳送到標準輸出。此選項作為在程式開發中有用的實用程式提供,不適用於生產系統。

-Xrs

減少JVM對作業系統訊號的使用。

關閉掛鉤通過在關閉時執行使用者清理程式碼(例如關閉資料庫連線)來啟用Java應用程式的有序關閉,即使JVM突然終止也是如此。

JVM捕獲訊號以實現意外終止的關閉掛鉤。JVM使用SIGHUPSIGINTSIGTERM啟動關閉掛鉤的執行。

JVM使用類似的機制來實現轉儲執行緒堆疊的功能以進行除錯。JVM用於SIGQUIT執行執行緒轉儲。

嵌入JVM的應用程式經常需要捕獲諸如SIGINT或之類的訊號SIGTERM,這可能導致對JVM訊號處理程式的干擾。-Xrs選項可用於解決此問題。-Xrs被使用時,用於訊號掩模SIGINTSIGTERMSIGHUP,和SIGQUIT不被JVM改變,並且對於這些訊號的訊號處理程式沒有安裝。

指定有兩種結果-Xrs

  • SIGQUIT 執行緒轉儲不可用。

  • 使用者程式碼負責導致關閉掛鉤執行,例如,通過System.exit()在終止JVM時呼叫

-Xshare: 模式

設定類資料共享(CDS)模式。此選項的可能模式引數包括以下內容:

汽車

儘可能使用CDS。這是Java HotSpot 32位客戶端VM的預設值。

需要使用CDS。如果無法使用類資料共享,則列印錯誤訊息並退出。

不要使用CDS。這是Java HotSpot 32位伺服器VM,Java HotSpot 64位客戶端VM和Java HotSpot 64位伺服器VM的預設值。

傾倒

手動生成CDS存檔。按照“設定類路徑”中的說明指定應用程式類路徑

您應該使用每個新的JDK版本重新生成CDS存檔。

-XshowSettings: 類別

顯示設定並繼續。此選項的可能類別引數包括以下內容:

所有

顯示所有類別的設定。這是預設值。

現場

顯示與區域設定相關的設定。

效能

顯示與系統屬性相關的設定。

VM

顯示JVM的設定。

-Xss  大小

設定執行緒堆疊大小(以位元組為單位)。附加字母kK表示KB,mM表示MB,gG表示GB。預設值取決於平臺:

  • Linux / ARM(32位):320 KB

  • Linux / i386(32位):320 KB

  • Linux / x64(64位):1024 KB

  • OS X(64位):1024 KB

  • Oracle Solaris / i386(32位):320 KB

  • Oracle Solaris / x64(64位):1024 KB

以下示例以不同為單位將執行緒堆疊大小設定為1024 KB:

-Xss1m 
-Xss1024k 
-Xss1048576

此選項相當於-XX:ThreadStackSize

-Xusealtsigs

使用替代訊號,而不是SIGUSR1SIGUSR2對JVM內部訊號。此選項相當於-XX:+UseAltSigs

-Xverify: 模式

設定位元組碼驗證器的模式。位元組碼驗證可確保正確形成類檔案,並滿足“Java虛擬機器規範”中第4.10節“ class檔案驗證列出的約束

不要關閉驗證,因為這會減少Java提供的保護,並可能由於格式錯誤的類檔案而導致問題。

此選項的可能模式引數包括以下內容:

遠端

驗證引導類載入器未載入的所有位元組碼。如果未指定該-Xverify選項,則這是預設行為

所有

啟用所有位元組碼的驗證。

沒有

禁用所有位元組碼的驗證。使用-Xverify:none不受支援。

高階執行時選項

這些選項控制Java HotSpot VM的執行時行為。

-XX:+ CheckEndorsedAndExtDirs

java如果命令使用了endorsed-standards override機制或擴充套件機制,則啟用該選項以阻止命令執行Java應用程式。此選項通過檢查以下內容來檢查應用程式是否正在使用這些機制之一:

  • java.ext.dirsjava.endorsed.dirs系統屬性設定。

  • lib/endorsed目錄存在且不為空。

  • lib/ext目錄包含除JDK之外的任何JAR檔案。

  • 系統範圍的特定於平臺的擴充套件目錄包含任何JAR檔案。

-XX:+ DisableAttachMechanism

啟用禁用允許工具附加到JVM的機制的選項。預設情況下,該選項被禁用,這意味著連線機制啟用,您可以使用工具,例如jcmdjstackjmap,和jinfo

-XX:ErrorFile =  filename

指定發生不可恢復的錯誤時寫入錯誤資料的路徑和檔名。預設情況下,此檔案在當前工作目錄中建立,並命名為hs_err_pidpid.log,其中pid是導致錯誤的程序的識別符號。以下示例顯示如何設定預設日誌檔案(請注意,程序的識別符號指定為%p):

-XX:錯誤檔案= / hs_err_pid%p.log

以下示例顯示如何將錯誤日誌設定為/var/log/java/java_error.log

-XX:錯誤檔案= /無功/日誌/ JAVA / java_error.log

如果無法在指定目錄中建立檔案(由於空間不足,許可權問題或其他問題),則會在作業系統的臨時目錄中建立該檔案。臨時目錄是/tmp

-XX:+ FailOverToOldVerifier

當新型別檢查程式失敗時,啟用對舊驗證程式的自動故障轉移。預設情況下,此選項被禁用,並且對於具有最新位元組碼版本的類,它將被忽略(即,視為已禁用)。您可以為具有舊版位元組碼的類啟用它。

-XX:+ FlightRecorder

允許在應用程式執行時使用Java Flight Recorder(JFR)。這是一個商業功能,與-XX:+UnlockCommercialFeatures選項一起使用如下:

java -XX:+ UnlockCommercialFeatures -XX:+ FlightRecorder

如果未提供此選項,則仍可通過提供相應的jcmd診斷命令在正在執行的JVM中啟用Java Flight Recorder 

-XX:-FlightRecorder

在應用程式執行時禁用Java Flight Recorder(JFR)。這是一個商業功能,與-XX:+UnlockCommercialFeatures選項一起使用如下:

java -XX:+ UnlockCommercialFeatures -XX:-FlightRecorder

如果提供此選項,則無法在正在執行的JVM中啟用Java Flight Recorder。

-XX:FlightRecorderOptions =  parameter  =  value

設定控制JFR行為的引數。這是一個與-XX:+UnlockCommercialFeatures選項配合使用的商業功能僅當啟用JFR時(即-XX:+FlightRecorder指定選項),才能使用此選項

以下列表包含所有可用的JFR引數:

defaultrecording = {真|假}

指定錄製是連續背景錄製還是在有限時間內執行。預設情況下,此引數設定為false(記錄在限定時間內執行)。要使錄製連續執行,請將引數設定為true

磁碟= {真|假}

指定JFR是否應將連續記錄寫入磁碟。預設情況下,此引數設定為false(禁用連續錄製到磁碟)。要啟用它,請將引數設定為true,並設定defaultrecording=true

dumponexit = {真|假}

指定當JVM以受控方式終止時是否應生成JFR資料的轉儲檔案。預設情況下,此引數設定為false(不生成退出時的轉儲檔案)。要啟用它,請將引數設定為true,並設定defaultrecording=true

轉儲檔案將寫入dumponexitpath引數定義的位置

dumponexitpath =  path

如果設定dumponexit=true引數,則使用JVM以受控方式退出時建立的JFR資料指定轉儲檔案的路徑和名稱只有在設定的情況下才能設定路徑defaultrecording=true

如果指定的路徑是目錄,則JVM會分配一個顯示建立日期和時間的檔名。如果指定的路徑包含檔名,並且該檔案已存在,則JVM通過將日期和時間戳附加到指定的檔名來建立新檔案。

globalbuffersize =  size

指定用於資料保留的主記憶體總量(以位元組為單位)。追加kK到指定KB大小,mM以MB為單位指定大小,gG到指定GB的大小。預設情況下,大小設定為462848位元組。

日誌等級= {安靜|錯誤|警告|資訊|除錯|跟蹤}

指定JFR寫入日誌檔案的資料量。預設情況下,它設定為info

maxage =  時間

指定要為預設錄製保留的磁碟資料的最長期限。附加s以指定以秒m單位的時間,分鐘,h小時或d天數(例如,指定30s表示30秒)。預設情況下,最大年齡設定為15分鐘(15m)。

僅當您設定disk=true引數時,此引數才有效

maxchunksize =  size

指定記錄中資料塊的最大大小(以位元組為單位)。追加kK到指定KB大小,mM以MB為單位指定大小,gG到指定GB的大小。預設情況下,資料塊的最大大小設定為12 MB。

maxsize =  size

指定要為預設記錄保留的磁碟資料的最大大小(以位元組為單位)。追加kK到指定KB大小,mM以MB為單位指定大小,gG到指定GB的大小。預設情況下,磁碟資料的最大大小不受限制,此引數設定為0。

僅當您設定disk=true引數時,此引數才有效

repository =  path

指定臨時磁碟儲存的儲存庫(目錄)。預設情況下,使用系統的臨時目錄。

samplethreads = {真|假}

指定是否啟用執行緒取樣。僅當取樣事件與此引數一起啟用時,才會進行執行緒取樣。預設情況下,啟用此引數。

settings =  path

指定事件設定檔案的路徑和名稱(型別為JFC)。預設情況下,使用該default.jfc檔案,該檔案位於JAVA_HOME/jre/lib/jfr

stackdepth =  深度

JFR的堆疊跟蹤堆疊深度。預設情況下,深度設定為64個方法呼叫。最大值為2048,最小值為1。

threadbuffersize =  size

指定每執行緒本地緩衝區大小(以位元組為單位)。追加kK到指定KB大小,mM以MB為單位指定大小,gG到指定GB的大小。此引數的較高值允許更多資料收集而不會爭用將其重新整理到全域性儲存。它可以線上程豐富的環境中增加應用程式佔用空間。預設情況下,本地緩衝區大小設定為5 KB。

您可以通過用逗號分隔多個引數的值來指定它們。例如,要指示JFR將連續記錄寫入磁碟,並將資料塊的最大大小設定為10 MB,請指定以下內容:

-XX:FlightRecorderOptions = defaultrecording = TRUE,磁碟= TRUE,maxchunksize = 10M
-XX:LargePageSizeInBytes =  size

在Solaris上,設定用於Java堆的大頁面的最大大小(以位元組為單位)。尺寸引數必須是2的冪(2,4,8,16,...)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設情況下,大小設定為0,這意味著JVM會自動選擇大頁面的大小。

以下示例說明如何將大頁面大小設定為4兆位元組(MB):

-XX:LargePageSizeInBytes =4米
-XX:MaxDirectMemorySize =  size

設定新I / O(java.nio包)直接緩衝區分配的最大總大小(以位元組為單位)附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設情況下,大小設定為0,這意味著JVM會自動選擇NIO直接緩衝區分配的大小。

以下示例說明如何以不同單位將NIO大小設定為1024 KB:

-XX:MaxDirectMemorySize = 1m 
-XX:MaxDirectMemorySize = 1024k 
-XX:MaxDirectMemorySize = 1048576
-XX:NativeMemoryTracking =  mode

指定用於跟蹤JVM本機記憶體使用情況的模式。此選項的可能模式引數包括以下內容:

不跟蹤JVM本機記憶體使用情況。如果未指定該-XX:NativeMemoryTracking選項,則這是預設行為

摘要

僅跟蹤JVM子系統的記憶體使用情況,例如Java堆,類,程式碼和執行緒。

詳情

除了跟蹤JVM子系統的記憶體使用情況外,還可以跟蹤CallSite各個虛擬記憶體區域及其已提交區域的記憶體使用情況

-XX:ObjectAlignmentInBytes =  alignment

設定Java物件的記憶體對齊方式(以位元組為單位)。預設情況下,該值設定為8個位元組。指定的值應為2的冪,並且必須在8和256(含)的範圍內。此選項可以使用具有大Java堆大小的壓縮指標。

堆大小限制(以位元組為單位)計算如下:

4GB * ObjectAlignmentInBytes

注意:隨著對齊值的增加,物件之間未使用的空間也會增加。因此,您可能沒有意識到使用具有大型Java堆大小的壓縮指標會帶來任何好處。

-XX:OnError =  string

設定自定義命令或一系列以分號分隔的命令,以便在發生不可恢復的錯誤時執行。如果字串包含空格,則必須用引號括起來。

以下示例顯示瞭如何使用該-XX:OnError選項執行gcore命令來建立核心映像,並且在出現無法恢復的錯誤(%p指定當前程序)時,偵錯程式將開始附加到程序:

-XX:OnError =“gcore%p; dbx  - %p”
-XX:OnOutOfMemoryError =  string

設定自定義命令或一系列以分號分隔的命令,以便在OutOfMemoryError首次引發異常時執行如果字串包含空格,則必須用引號括起來。有關命令字串的示例,請參閱該-XX:OnError選項的說明

-XX:+ PerfDataSaveToFile

如果啟用,則在Java應用程式退出時儲存jstat(1)二進位制資料。此二進位制資料儲存在名為的檔案中hsperfdata_<pid>,其中<pid>是您執行的Java應用程式的程序識別符號。使用jstat如下顯示包含在該檔案中的效能資料:

jstat -class file:/// <path> / hsperfdata_ <pid> 
jstat -gc file:/// <path> / hsperfdata_ <pid>
-XX:+ PrintCommandLineFlags

允許打印出現在命令列上的符合人體工程學選擇的JVM標誌。瞭解JVM設定的人體工程學值(例如堆空間大小和選定的垃圾收集器)可能很有用。預設情況下,禁用此選項並且不列印標誌。

-XX:+ PrintNMTStatistics

當啟用本機記憶體跟蹤時,允許在JVM出口處列印收集的本機記憶體跟蹤資料(請參閱參考資料-XX:NativeMemoryTracking)。預設情況下,禁用此選項並且不列印本機記憶體跟蹤資料。

-XX:+ RelaxAccessControlCheck

減少驗證程式中訪問控制檢查的數量。預設情況下,此選項被禁用,對於具有最新位元組碼版本的類,它將被忽略(即,視為已禁用)。您可以為具有舊版位元組碼的類啟用它。

-XX:+ ResourceManagement

在應用程式的執行時期間啟用資源管理。

這是一項商業功能,需要您還指定-XX:+UnlockCommercialFeatures選項,如下所示:

java -XX:+UnlockCommercialFeatures -XX:+ResourceManagement

-XX:ResourceManagementSampleInterval =  value (毫秒)

設定控制資源管理測量的取樣間隔的引數,以毫秒為單位。

僅當啟用資源管理(即-XX:+ResourceManagement指定選項)時,才能使用此選項

-XX:SharedArchiveFile =  path

指定類資料共享(CDS)歸檔檔案的路徑和名稱

-XX:SharedClassListFile =  file_name

指定包含要儲存在類資料共享(CDS)存檔中的類檔名稱的文字檔案。此檔案包含每行一個類檔案的全名,但斜槓(/)替換dots(.)除外。例如,指定類java.lang.Objecthello.Main,建立一個包含以下兩行的文字檔案:

java / lang / Object 
hello / Main

您在此文字檔案中指定的類檔案應包含應用程式常用的類。它們可以包括應用程式,擴充套件或引導類路徑中的任何類。

-XX:+ ShowMessageBoxOnError

當JVM遇到無法恢復的錯誤時,允許顯示對話方塊。這可以防止JVM退出並使程序保持活動狀態,以便您可以將偵錯程式附加到它以調查錯誤原因。預設情況下,禁用此選項。

-XX:StartFlightRecording =  parameter  =  value

啟動Java應用程式的JFR記錄。這是一個與-XX:+UnlockCommercialFeatures選項配合使用的商業功能此選項等同於JFR.start在執行時啟動記錄診斷命令。您可以在開始JFR錄製時設定以下引數:

壓縮= {真|假}

指定是否使用gzip檔案壓縮實用程式壓縮磁碟上的JFR記錄日誌檔案(JFR型別)僅當filename指定引數時,此引數才有效預設設定為false(記錄未壓縮)。要啟用壓縮,請將引數設定為true

defaultrecording = {真|假}

指定錄製是連續背景錄製還是在有限時間內執行。預設情況下,此引數設定為false(記錄在限定時間內執行)。要使錄製連續執行,請將引數設定為true

延遲=  時間

指定Java應用程式啟動時間和記錄開始之間的延遲。附加s以指定以秒m單位的時間,分鐘,h小時或d天數(例如,指定10m表示10分鐘)。預設情況下,沒有延遲,此引數設定為0。

dumponexit = {真|假}

指定當JVM以受控方式終止時是否應生成JFR資料的轉儲檔案。預設情況下,此引數設定為false(不生成退出時的轉儲檔案)。要啟用它,請將引數設定為true

轉儲檔案將寫入filename引數定義的位置

例:

-XX:StartFlightRecording =名=測試中,檔名= d:\ test.jfr,dumponexit =真
持續時間=  時間

指定錄製的持續時間。附加s以指定以秒m單位的時間,分鐘,h小時或d天數(例如,指定5h表示5小時)。預設情況下,持續時間不受限制,此引數設定為0。

filename =  path

指定JFR記錄日誌檔案的路徑和名稱。

name =  識別符號

指定JFR記錄的識別符號。預設情況下,它設定為Recording x

maxage =  時間

指定要為預設錄製保留的磁碟資料的最長期限。附加s以指定以秒m單位的時間,分鐘,h小時或d天數(例如,指定30s表示30秒)。預設情況下,最大年齡設定為15分鐘(15m)。

maxsize =  size

指定要為預設記錄保留的磁碟資料的最大大小(以位元組為單位)。追加kK到指定KB大小,mM以MB為單位指定大小,gG到指定GB的大小。預設情況下,磁碟資料的最大大小不受限制,此引數設定為0。

settings =  path

指定事件設定檔案的路徑和名稱(型別為JFC)。預設情況下,使用該default.jfc檔案,該檔案位於JAVA_HOME/jre/lib/jfr

您可以通過用逗號分隔多個引數的值來指定它們。例如,要將記錄儲存到當前工作目錄中的test.jfr,並指示JFR壓縮日誌檔案,請指定以下內容:

-XX:StartFlightRecording =檔名= test.jfr,壓縮= TRUE
-XX:ThreadStackSize =  size

設定執行緒堆疊大小(以位元組為單位)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設值取決於平臺:

  • Linux / ARM(32位):320 KB

  • Linux / i386(32位):320 KB

  • Linux / x64(64位):1024 KB

  • OS X(64位):1024 KB

  • Oracle Solaris / i386(32位):320 KB

  • Oracle Solaris / x64(64位):1024 KB

以下示例顯示如何以不同單位將執行緒堆疊大小設定為1024 KB:

-XX:ThreadStackSize = 1m 
-XX:ThreadStackSize = 1024k 
-XX:ThreadStackSize = 1048576

此選項相當於-Xss

-XX:+ TraceClassLoading

允許在載入類時跟蹤類。預設情況下,禁用此選項並且不跟蹤類。

-XX:+ TraceClassLoadingPreorder

允許按引用順序跟蹤所有已載入的類。預設情況下,禁用此選項並且不跟蹤類。

-XX:+ TraceClassResolution

允許跟蹤常量池解析度。預設情況下,禁用此選項並且不跟蹤常量池解析度。

-XX:+ TraceClassUnloading

允許在解除安裝類時跟蹤類。預設情況下,禁用此選項並且不跟蹤類。

-XX:+ TraceLoaderConstraints

允許跟蹤載入器約束記錄。預設情況下,禁用此選項並且不跟蹤載入程式約束記錄。

-XX:+ UnlockCommercialFeatures

允許使用商業功能。Oracle Java SE Advanced或Oracle Java SE Suite軟體包中包含商業功能,如Java SE產品頁面中所定義http://www.oracle.com/technetwork/java/javase/terms/products/index.html

預設情況下,此選項被禁用,JVM在沒有商業功能的情況下執行。一旦為JVM程序啟用了它們,就無法禁用它們用於該程序。

如果未提供此選項,則仍可使用相應的jcmd診斷命令在正在執行的JVM中解鎖商業功能

-XX:+ UseAltSigs

使得能夠使用替代訊號,而不是SIGUSR1SIGUSR2用於JVM內部訊號。預設情況下,此選項被禁用,並且不使用替代訊號。此選項相當於-Xusealtsigs

-XX:+ UseAppCDS

啟用應用程式類資料共享(AppCDS)。要使用AppCDS,還必須指定選項的值-XX:SharedClassListFile-XX:SharedArchiveFile兩個CDS在轉儲時間(見選項-Xshare:dump)和應用程式執行時間。

這是一項商業功能,需要您同時指定-XX:+UnlockCommercialFeatures選項。這也是一個實驗性的特徵; 它可能在將來的版本中發生變化

請參閱“應用程式類資料共享”

-XX:-UseBiasedLocking

禁用使用偏置鎖定。一些具有大量無競爭同步的應用程式可以在啟用此標誌的情況下獲得顯著的加速,而具有某些鎖定模式的應用程式可能會看到減速。有關偏置鎖定技術的更多資訊,請參閱Java調優白皮書中的示例http://www.oracle.com/technetwork/java/tuning-139912.html#section4.2.5

預設情況下,啟用此選項。

-XX:-UseCompressedOops

禁用壓縮指標的使用。預設情況下,啟用此選項,並在Java堆大小小於32 GB時使用壓縮指標。啟用此選項時,物件引用表示為32位偏移而不是64位指標,這通常會在執行Java堆大小小於32 GB的應用程式時提高效能。此選項僅適用於64位JVM。

當Java堆大小大於32GB時,也可以使用壓縮指標。請參閱-XX:ObjectAlignmentInBytes選項。

-XX:+ UseHugeTLBFS

Linux的此選項相當於指定-XX:+UseLargePages預設情況下禁用此選項。當保留記憶體時,此選項預先分配所有大頁面; 因此,JVM無法動態增長或縮小大頁面記憶體區域; 看看-XX:UseTransparentHugePages你是否想要這種行為。

有關更多資訊,請參閱“大頁面”

-XX:+ UseLargePages

允許使用大頁面記憶體。預設情況下,禁用此選項並且不使用大頁面記憶體。

有關更多資訊,請參閱“大頁面”

-XX:+ UseMembar

允許線上程狀態轉換上釋出membars。預設情況下,在除ARM伺服器之外的所有平臺上都禁用此選項。(建議您不要在ARM伺服器上禁用此選項。)

-XX:+ UsePerfData

啟用該perfdata功能。預設情況下啟用此選項以允許JVM監視和效能測試。禁用它會禁止建立hsperfdata_userid目錄。要禁用該perfdata功能,請指定-XX:-UsePerfData

-XX:+ UseTransparentHugePages

在Linux上,允許使用可以動態增長或縮小的大頁面。預設情況下禁用此選項。您可能會遇到透明大頁面的效能問題,因為作業系統會移動其他頁面以建立大頁面; 此選項可用於實驗。

有關更多資訊,請參閱“大頁面”

-XX:+ AllowUserSignalHandlers

允許應用程式安裝訊號處理程式。預設情況下,禁用此選項,並且不允許應用程式安裝訊號處理程式。

高階JIT編譯器選項

這些選項控制Java HotSpot VM執行的動態即時(JIT)編譯。

-XX:+ AggressiveOpts

允許使用積極的效能優化功能,這些功能有望在即將釋出的版本中成為預設功能。預設情況下,禁用此選項並且不使用實驗效能功能。

-XX:AllocateInstancePrefetchLines =  lines

設定在例項分配指標之前預取的行數。預設情況下,預取的行數設定為1:

-XX:AllocateInstancePrefetchLines = 1

只有Java HotSpot Server VM支援此選項。

-XX:AllocatePrefetchDistance =  size

設定物件分配的預取距離的大小(以位元組為單位)。將從最後分配的物件的地址開始預取將要使用新物件的值寫入的記憶體。每個Java執行緒都有自己的分配點。

負值表示基於平臺選擇預取距離。正值是預取的位元組數。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設值設定為-1。

以下示例顯示如何將預取距離設定為1024位元組:

-XX:AllocatePrefetchDistance = 1024

只有Java HotSpot Server VM支援此選項。

-XX:AllocatePrefetchInstr =  指令

將預取指令設定為在分配指標之前預取。只有Java HotSpot Server VM支援此選項。可能的值為0到3.值後面的實際指令取決於平臺。預設情況下,預取指令設定為0:

-XX:AllocatePrefetchInstr = 0

只有Java HotSpot Server VM支援此選項。

-XX:AllocatePrefetchLines =  lines

使用編譯程式碼中生成的預取指令設定在最後一次物件分配後要載入的快取記憶體行數。如果最後分配的物件是例項,則預設值為1;如果是陣列,則預設值為3。

以下示例顯示如何將載入的快取行數設定為5:

-XX:AllocatePrefetchLines = 5

只有Java HotSpot Server VM支援此選項。

-XX:AllocatePrefetchStepSize =  size

設定順序預取指令的步長(以位元組為單位)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。預設情況下,步長設定為16個位元組:

-XX:AllocatePrefetchStepSize = 16

只有Java HotSpot Server VM支援此選項。

-XX:AllocatePrefetchStyle =  style

為預取指令設定生成的程式碼樣式。風格引數是從0至3的整數:

0

不要生成預取指令。

1

每次分配後執行預取指令。這是預設引數。

2

使用執行緒區域性分配塊(TLAB)水印指標來確定何時執行預取指令。

3

在SPARC上使用BIS指令進行分配預取。

只有Java HotSpot Server VM支援此選項。

-XX:+ BackgroundCompilation

啟用後臺編譯。預設情況下啟用此選項。要禁用後臺編譯,請指定-XX:-BackgroundCompilation(這相當於指定-Xbatch)。

-XX:CICompilerCount =  threads

設定用於編譯的編譯器執行緒數。預設情況下,伺服器JVM的執行緒數設定為2,客戶端JVM的執行緒數設定為1,如果使用分層編譯,則會擴充套件為核心數。以下示例顯示如何將執行緒數設定為2:

-XX:CICompilerCount = 2
-XX:CodeCacheMinimumFreeSpace =  size

設定編譯所需的最小可用空間(以位元組為單位)。附加字母kK表示千位元組,mM指示兆位元組,gG指示千兆位元組。當剩餘小於最小可用空間時,編譯停止。預設情況下,此選項設定為500 KB。以下示例顯示如何將最小可用空間設定為1024 MB:

-XX:CodeCacheMinimumFreeSpace =1024米
-XX:CompileCommand =  command