AOT 編譯器

「提前時間 (AOT)」編譯容許將 Java™ 類別編譯成原生程式碼,以便後續執行相同程式。 AOT 編譯器使用類別資料共用架構。

AOT 編譯器會在應用程式執行時動態產生原生程式碼,並在共用資料快取中快取任何產生的 AOT 程式碼。 執行此方法的後續 JVM 可以從共用資料快取載入及使用 AOT 程式碼,而不會導致 JIT 編譯原生程式碼的效能降低。

依預設會啟用 AOT 編譯器,但只有在啟用共用類別時才會啟用。 依預設,會停用共用類別,因此不會發生 AOT 活動。 當 AOT 編譯器在作用中,編譯器會選取方法來進行 AOT 編譯,主要目標是改善啟動時間。

附註: 由於 AOT 程式碼必須在不同的程式執行中持續保存,因此 AOT 產生的程式碼不會像 JIT 產生的程式碼一樣執行。 AOT 程式碼通常比解譯程式碼執行得好。

在沒有 AOT 編譯器或已停用 AOT 編譯器的 JVM 中, JIT 編譯器會選擇性地將常用方法編譯成最佳化原生程式碼。 編譯方法有相關聯的時間成本,因為 JIT 編譯器會在應用程式執行時運作。 因為方法從解譯開始,且大部分 JIT 編譯都在啟動期間發生,所以啟動時間可以增加。

您可以利用共用 AOT 程式碼來提供原生程式碼,而不進行編譯,以增進啟動效能。 從共用資料快取中載入方法的 AOT 程式碼並將其連結至執行中程式的時間成本很小。 與 JIT 編譯器編譯該方法所需的時間相比,時間成本較低。

-Xshareclasses 選項可用來啟用共用類別,也可以在啟用 AOT 時啟動 AOT 編譯器。