Java 中的_JAVA_OPTIONS 環境變數

Mohd Mohtashim Nawaz 2023年10月12日
  1. Java 選項的型別
  2. Java 中的 _JAVA_OPTIONS 環境變數
  3. Java 中的 JAVA_TOOL_OPTIONS 環境變數
  4. Java 中 JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS 之間的區別
  5. まとめ
Java 中的_JAVA_OPTIONS 環境變數

_JAVA_OPTIONS 是一個環境變數,可用於將 Java 選項傳遞給 JVM 程序。傳遞的 Java 選項的處理方式與 Java 虛擬機器的命令列引數類似。

在本文中,我們將瞭解不同型別的 Java 選項。我們還將看到 _JAVA_OPTIONSJAVA_TOOL_OPTIONSJDK_JAVA_OPTIONSJAVA_TOOL_OPTIONS 環境變數之間的區別。

Java 選項的型別

Java 定義了三種不同型別的選項。Java 根據它們在不同 Java 版本中的支援及其用法來區分選項。

讓我們瞭解每個選項的類別。

  1. 標準選項——Java 保證所有 Java 版本都支援標準選項。Java 允許將這些選項用於常見操作,例如:
    1. 設定 classpath 變數。
    2. 檢查 Java Runtime Environment (JRE) 的版本。
    3. 切換 verbose 輸出等。
  2. 額外選項 - Java 不保證所有版本都支援這些型別的選項。這些選項專門與 JavaHotSpot 虛擬機器相關,並且可以更改。
    Java 使用這些選項來設定特定的變數。
  3. 高階選項——Java 為開發者提供了高階選項。開發人員可以使用這些選項來調整 JVM、JRE、JIT 和垃圾收集器。

有四種不同型別的高階選項。這些給出如下。

  1. 執行時選項 - 開發人員可以使用這些選項來調整 JVM 的執行時間。
  2. JIT 編譯器選項 - 開發人員可以使用這些選項來控制即時 (JIT) Java 編譯器。
  3. 可維護性選項——Java 定義了這些用於除錯和收集系統資訊的選項。
  4. 垃圾收集選項 - 開發人員可以使用這些選項控制 Java 的垃圾收集機制。

Java 中的 _JAVA_OPTIONS 環境變數

Java 定義了幾個環境變數,以便在程序執行期間將 Java 選項傳遞給 JVM。_JAVA_OPTIONS 就是這樣一個環境變數。

Java 將使用此環境變數傳遞的引數與命令列引數類似。

事實上,根據 Oracle 的 Java 文件,Java 提供了這些選項,以便可以將命令列引數傳遞給那些無法使用直接命令列的執行環境中的程式。

你可以傳遞多個引數,其中每個引數由空格分隔。如果你的引數包含空格,則應將其括在引號內。

使用 _JAVA_OPTIONS 時應該小心,因為如果引數無效,程式的執行將失敗。

讓我們看一個傳遞變數選項以啟用日誌跟蹤的示例。

export _JAVA_OPTIONS = '-Dsun.java2d.trace=log'

Java 中的 JAVA_TOOL_OPTIONS 環境變數

JAVA_TOOL_OPTIONS_JAVA_OPTIONS 的繼承者。_JAVA_OPTIONS 環境變數在 JVM 規範中沒有標準化。因此,不同的供應商對此變數有自己的名稱。

但是,JAVA_TOOL_OPTIONS 變數在 JVM 規範中是標準化的。你應該總是喜歡它而不是 _JAVA_OPTIONS

這是因為它可以更好地處理空格和引號。

Java 中 JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS 之間的區別

JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS 非常相似,因為 Java 允許使用這兩個環境變數將 Java 選項傳遞給 JVM。

正如我們已經看到的,使用 JAVA_TOOL_OPTIONS 傳遞引數的所有規則和方法也適用於 JDK_JAVA_OPTIONS

但是,這些變數之間的主要區別如下所示。

  1. Java 啟動器讀取使用 JDK_JAVA_OPTIONS 傳遞的引數。因此,我們不能傳遞導致啟動器退出的選項並指定 JAR 或主類。

因此,我們可以使用這個變數來傳遞在啟動器級別執行時使用的選項。

  1. Java 編譯器和 JAR 也讀取 JAVA_TOOL_OPTIONS。因此,我們可以使用這個變數來設定選項來調整執行。

例如,我們可以使用此變數設定標誌。

まとめ

本文討論了 Java 的 JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS_JAVA_OPTIONS 環境變數。我們還討論了使用這些環境變數的區別。