JAVA啟動引數大全之二:非標準引數
阿新 • • 發佈:2018-11-17
非標準引數又稱為擴充套件引數,其列表如下:
-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