jvm中啟動引數 -XX,-X,-D 的區別

語言: CN / TW / HK

啟動JVM時通過指定配置引數來指導虛擬機器按照我們的要求提供服務,這一點對大多數的Java程式設計師來說已經是司空見慣。

配置 引數 型別 說明 舉例
-X non-standard 非標準引數。這些引數不是虛擬機器規範規定的。因此,不是所有VM的實現(如:HotSpot,JRockit,J9等)都支援這些配置引數。 -Xmx、-Xms、-Xmn、-Xss
-XX not-stable 不穩定引數。這些引數是虛擬機器規範中規定的。這些引數指定虛擬機器例項在執行時的各種行為,從而對虛擬機器的執行時效能有很大影響。 -XX:SurvivorRatio、-XX:+UseParNewGc

備註:

-X-XX兩種引數都可能隨著JDK版本的變更而發生變化,有些引數可以能會被廢棄掉,有些引數的功能會發生改變,但是JDK官方不會通知開發者這些變化,需要使用者注意。

-XX引數被稱為不穩定引數,是因為這類引數的設定會引起JVM執行時效能上的差異,配置得當可以提高JVM效能,配置不當則會使JVM出現各種問題, 甚至造成JVM崩潰。

對於-XX型別的配置選項,虛擬機器規範有一些慣例,針對不同的平臺虛擬機器也會提供不同的預設值。

  • 對於布林(Boolean)型別的配置選項,通過-XX:+<option>來開啟,通過-XX:-<option>來關閉。
  • 對於數字(Numberic)型別的配置選項,通過-XX:<option>=<number>來配置。<number>後面可以攜帶單位字母,比如: 'k'或者'K'代表千位元組,'m'或者'M'代表兆位元組,'g'或者'G'代表千兆位元組。
  • 對於字串(String)型別的配置選項,通過-XX:<option>=<string>來配置。這種配置通過用來指定檔案,路徑或者命令列表。

-D是jvm啟動時給系統引數賦值用的(可以是系統預設有的引數,也可以是自己定義的引數),這個過程會在jvm開始java應用程式之前執行。這個引數賦值也可以通過使用System.setProperty(key, value);來完成。

-Dspring.profiles.active=test
-Dhsf.server.port=12404
-Dpandora.qos.port=12401
-Dhsf.http.port=12402