1. 程式人生 > >JAVA啟動引數大全之二:非標準引數

JAVA啟動引數大全之二:非標準引數

非標準引數又稱為擴充套件引數,其列表如下:
-Xint
 設定jvm以解釋模式執行,所有的位元組碼將被直接執行,而不會編譯成本地碼。
 
-Xbatch
 關閉後臺程式碼編譯,強制在前臺編譯,編譯完成之後才能進行程式碼執行;
 預設情況下,jvm在後臺進行編譯,若沒有編譯完成,則前臺執行程式碼時以解釋模式執行。
 
-Xbootclasspath:bootclasspath
 讓jvm從指定路徑(可以是分號分隔的目錄、jar、或者zip)中載入bootclass,用來替換jdk的rt.jar;若非必要,一般不會用到;
-Xbootclasspath/a:path


 將指定路徑的所有檔案追加到預設bootstrap路徑中;
-Xbootclasspath/p:path
 讓jvm優先於bootstrap預設路徑載入指定路徑的所有檔案;
 
-Xcheck:jni
 對JNI函式進行附加check;此時jvm將校驗傳遞給JNI函式引數的合法性,在原生代碼中遇到非法資料時,jmv將報一個致命錯誤而終止;使用該引數後將造成效能下降,請慎用。
 
-Xfuture
 讓jvm對類檔案執行嚴格的格式檢查(預設jvm不進行嚴格格式檢查),以符合類檔案格式規範,推薦開發人員使用該引數。
 
-Xnoclassgc

 關閉針對class的gc功能;因為其阻止記憶體回收,所以可能會導致OutOfMemoryError錯誤,慎用;
 
-Xincgc
 開啟增量gc(預設為關閉);這有助於減少長時間GC時應用程式出現的停頓;但由於可能和應用程式併發執行,所以會降低CPU對應用的處理能力。
 
-Xloggc:file
 與-verbose:gc功能類似,只是將每次GC事件的相關情況記錄到一個檔案中,檔案的位置最好在本地,以避免網路的潛在問題。
 若與verbose命令同時出現在命令列中,則以-Xloggc為準。
 
-Xmsn
 指定jvm堆的初始大小,預設為實體記憶體的1/64,最小為1M;可以指定單位,比如k、m,若不指定,則預設為位元組。
 
-Xmxn

 指定jvm堆的最大值,預設為實體記憶體的1/4或者1G,最小為2M;單位與-Xms一致。
 
-Xprof
 跟蹤正執行的程式,並將跟蹤資料在標準輸出輸出;適合於開發環境除錯。
 
-Xrs
 減少jvm對作業系統訊號(signals)的使用,該引數從1.3.1開始有效;
 從jdk1.3.0開始,jvm允許程式在關閉之前還可以執行一些程式碼(比如關閉資料庫的連線池),即使jvm被突然終止;
 jvm關閉工具通過監控控制檯的相關事件而滿足以上的功能;更確切的說,通知在關閉工具執行之前,先註冊控制檯的控制handler,然後對CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT這幾類事件直接返回true。
 但如果jvm以服務的形式在後臺執行(比如servlet引擎),他能接收CTRL_LOGOFF_EVENT事件,但此時並不需要初始化關閉程式;為了避免類似衝突的再次出現,從jdk1.3.1開始提供-Xrs引數;當此引數被設定之後,jvm將不接收控制檯的控制handler,也就是說他不監控和處理CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, or CTRL_SHUTDOWN_EVENT事件。
 
-Xssn
 設定單個執行緒棧的大小,一般預設為512k。 

上面這些引數中,比如-Xmsn、-Xmxn……都是我們效能優化中很重要的引數;
-Xprof、-Xloggc:file等都是在沒有專業跟蹤工具情況下排錯的好手;
在上一小節中提到的關於JProfiler的配置中就使用到了-Xbootclasspath/a:path

--------------------- 本文來自 sfdev 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/sfdev/article/details/2063464?utm_source=copy