版本
- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
LLVM 相容性
GraalVM 支援 LLVM 位元碼版本 4.0 至 12.0.1。建議使用 GraalVM 隨附的 LLVM 工具鏈。
最佳化旗標 #
與 LLVM 語言的靜態編譯模型相反,在 GraalVM 中,機器碼不是直接從 LLVM 位元碼產生的。Graal 編譯器會執行額外的動態編譯步驟。
首先,LLVM 前端(例如,clang
)會在位元碼層級執行最佳化,然後 Graal 編譯器會在動態編譯期間在其之上執行自己的最佳化。有些最佳化在位元碼上提前執行效果較佳,而其他最佳化則最好留給 Graal 編譯器的動態編譯,在有分析資訊時進行。
GraalVM 隨附的 LLVM 工具鏈預設會自動選擇建議的旗標。
一般來說,所有最佳化等級都應該可行,但為了獲得更好的結果,建議使用最佳化等級 -O1
編譯位元碼。
對於跨語言互通性,需要 -mem2reg
最佳化。有兩種方法可以獲得:要么至少使用 -O1
進行編譯,要么使用 opt
工具手動應用 -mem2reg
最佳化。