2017-09-21 67 views
1

我已經知道Openj9中有一個「動態AOT」, ,其中Openjdk9有一個AOT編譯器(jaotc)將字節碼編譯到共享庫。如何在Openj9中使用AOT編譯器?

但是Openj9沒有像jaotc這樣的程序,它使用「共享類」來存儲JIT代碼,這個代碼有望被其他JVM用來加速啓動時間。

我有以下問題:

  1. 如何確保Openj9 JVM是使用由其他JVM生產JIT編譯的代碼? (在openjdk9中,有一個選項「-XX:+ PrintAOT」來觀察)
  2. 如何使用OpenJ9的AOT?我使用選項「-Xshareclasses」執行程序,然後再次執行該程序?
  3. 有沒有關於Openj9 AOT的文檔?

如果有任何建議,我們將不勝感激。謝謝!

回答

2

你是對的,對於在OpenJ9上啓用的AOT,必須啓用-Xshareclasses選項。

  1. 我如何確保Openj9 JVM是否使用由 另一個JVM生產JIT編譯的代碼? (在openjdk9中,有一個選項「-XX:+ PrintAOT」到 觀察)

    使用選項-Xshareclasses:verboseAOT。您應該看到輸出 的消息,如下所示:

    在共享高速緩存中爲ROMMethod 0x000000000FFAE2C8存儲了AOT代碼。

    並在後續運行時,你會看到消息,例如:用於ROMMethod 0x000000001003C178在共享緩存

    找到AOT代碼。

  2. 如何使用AOT的Openj9?我使用選項「-Xshareclasses」執行程序,然後再次執行該程序?

    如果您希望在隨後的Java程序運行中堅持並重新使用AOTed代碼,請使用-Xshareclasses:persistent(在啓用-Xshareclasses時Linux和Windows平臺上的默認「persistent」子選項)運行。 使用此選項,將在磁盤上創建緩存,該緩存在操作系統重新啓動之後仍然存在。您還可以選擇爲共享類緩存(名稱=子參數)提供名稱,以區分不同應用程序的共享緩存。

  3. 有沒有關於Openj9 AOT的文檔?

    我可以指出你的下列文件:

    The AOT Compiler

    -Xshareclasses

    我也將打開一個GitHub的問題檢查一下AOT更多的文件是否可用或者可以被創建。

+0

P.S.:我打開了這個問題:https://github.com/eclipse/openj9/issues/97,並被指向OpenJ9的正確文檔,我已經在上面的鏈接中更新了它。 – deesebas

+0

它真的幫了我很多。謝謝,@deesebas! – cwei

+0

如果我運行後續的java程序,它想要重用AOTed代碼,是否需要爲後續程序設置「cacheDir」? 看起來AOTed代碼是由openj9 jvm生成的,然後在磁盤上創建緩存。所以當後續程序想要重用AOTed代碼時,第一個java程序不需要繼續執行。我對嗎? – cwei