提供適用於 Java 的 Azure 命令啟動器常見問題的解答。
Jaz 和 Java 指令有什麼不同?
除非使用者明確設定,否則 java 命令會以預設設定執行 HotSpot JVM (Java 虛擬機)。
jaz 是 Azure Command Launcher for Java 的一個元件,啟動 java 時採用經過實戰考驗、雲端優化的 JVM 預設值,旨在提升 Azure 虛擬機與容器的效能與成本效益。
主要優點:開發人員不需要手動調整 JVM。
jaz 為他們做。
如果我已經在環境中設定了一些 JVM 選項,會發生什麼事?
如果你的工作負載包含 JVM 調校標誌,指令 jaz 不會套用自己的調校預設值。
jaz 會 java 以您選擇的旗標啟動。
我們建議移除工作負載的調校旗標,讓 Azure Command Launcher for Java 自行套用。
你也可以設定 jaz 忽略調校標誌,改用調校預設值。
考慮用這個配置來驗證 jaz ,對你的工作負載設定做最小的改動。
為此,請設定以下環境變數:
export JAZ_IGNORE_USER_TUNING=1
忽略使用者微調設定會套用至命令行自變數、由 java和 @-files 讀取的環境變數。
你也可以設定 jaz 以下環境變數,跳過所有調校預設:
export JAZ_BYPASS=1
使用「繞過選項」,你可以直接接入 Azure Command Launcher for Java,而不會影響目前的調校,即使你的工作負載使用的是該指令 java 的預設行為。
此行為有助於在清理 JVM 調校旗標前驗證工具行為。
在排除疑似與 JVM 調校相關的問題時,繞過調校也可能很有用。
哪些 JVM 選項被視為調音旗標?
指令 jaz 會將以 -X 或 -XX 開頭的大多數旗標視為調整旗標,例如 -Xmx<size>。
一個以-X開頭但不是調音旗幟的著名例子是-Xlog:<opts>。
更精確地說,每個 JVM 選項都是根據以下列表中的邏輯來評估。 此列表描述了最新版本 Azure Command Launcher for Java 的邏輯。
- 如果選項以除
-X之外的任何文字開頭,那就不是調音旗標。 - 如果選項符合上述任何一個正則表達式,那就不是調諧旗標:
^-Xlog.+$^-XX:ErrorFile=.*$^-XX:[+-]?HeapDump.*$^-XX:[+-].*OnOutOfMemoryError$
- 否則,選項就是調音旗。
當尋找調諧標誌時 jaz ,會檢查傳遞給它的參數以及自動 java 讀取的環境變數。
環境變數如下:
- Java 8:
JAVA_TOOL_OPTIONS、_JAVA_OPTIONS - Java 9 和更新版本:
JAVA_TOOL_OPTIONS、、JDK_JAVA_OPTIONS_JAVA_OPTIONS
jaz 也會處理 @-files,也稱為命令行自變數檔案。
使用 jaz 時,我可以傳遞 Java 代理的旗標嗎?
Yes. 您仍然可以傳遞 -javaagent 和其他未微調旗標的旗標,並 jaz 接受它們。
您可以保留有用的診斷旗標,例如:
-
-Xlog用於記錄 -
-javaagent適用於 Application Insights 或其他應用程式效能監視 (APM) 檢測代理程式
Jaz 是否相容於非 Azure 環境?
jaz 主要是針對 Azure 容器和虛擬機進行設計和測試,但可在技術上在其他地方執行。
不過,某些進階優化和未來的功能可能是 Azure 特定的。
Jaz 有支援 Windows Server 嗎?
jaz 目前適用於 x64 和 arm64 環境的 Linux。
如果您有 Windows Server 的立即需求,請與我們連絡: openjdk-support@microsoft.com