Java 選項

java 命令支援多種選項:

  • 所有選項都以單個連字元或減號(-)開頭:不支援將 -- 用於 long 選項的 GNU / Linux 約定。

  • 選項必須出現在 <classname>-jar <jarfile> 引數之前才能被識別。它們之後的任何引數都將被視為要傳遞給正在執行的 Java 應用程式的引數。

  • 不以 -X-XX 開頭的選項是標準選項。你可以依賴所有 Java 實現 1 來支援任何標準選項。

  • -X 開頭的選項是非標準選項,可以從一個 Java 版本撤回到下一個 Java 版本。

  • -XX 開頭的選項是高階選項,也可能被撤銷。

使用 -D 設定系統屬性

-D<property>=<value> 選項用於在系統 Properties 物件中設定屬性。可以重複此引數以設定不同的屬性。

記憶體,堆疊和垃圾收集器選項

設定堆,PermGen 和堆疊大小中記錄了控制堆和堆疊大小的主要選項。 (編者注:垃圾收集器選項應在同一主題中描述。)

啟用和禁用斷言

-ea-da 選項分別啟用和禁用 Java assert 檢查:

  • 預設情況下禁用所有斷言檢查。
  • -ea 選項可以檢查所有斷言
  • -ea:<packagename>... 可以檢查包和所有子包中的斷言。
  • -ea:<classname>... 可以檢查類中的斷言。
  • -da 選項禁用所有斷言的檢查
  • -da:<packagename>... 禁用檢查包和所有子包中的斷言。
  • -da:<classname>... 禁止檢查類中的斷言。
  • -esa 選項可以檢查所有系統類。
  • -dsa 選項禁用檢查所有系統類。

選項可以組合。例如。

$ # Enable all assertion checking in non-system classes 
$ java -ea -dsa MyApp

$ # Enable assertions for all classes in a package except for one.
$ java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyApp

請注意,啟用斷言檢查可能會改變 Java 程式設計的行為。

  • 它一般會使應用程式變慢。
  • 它可能導致特定方法花費更長的時間來執行,這可能會改變多執行緒應用程式中的執行緒的時間。
  • 它可以引入偶然發生的關係,這可能導致記憶異常消失。
  • 錯誤實現的 assert 語句可能會產生不必要的副作用。

選擇 VM 型別

-client-server 選項允許你在兩種不同形式的 HotSpot VM 之間進行選擇:

  • 客戶端表單針對使用者應用程式進行了調整,並提供更快的啟動。
  • 伺服器表單針對長時間執行的應用程式進行了調整。在 JVM預熱期間需要更長的捕獲統計資訊,這允許 JIT 編譯器更好地優化本機程式碼。

預設情況下,如果可能,JVM 將以 64 位模式執行,具體取決於平臺的功能。-d32-d64 選項允許你明確選擇模式。

1 - 檢視 java 命令的官方手冊。有時標準選項被描述為可能會發生變化