首頁>技術>

GraalVM[1] 是一種高效能的虛擬機器,它可以顯著的提高程式的效能和執行效率,非常適合微服務。最近比較火的 Java 框架 Quarkus[2] 預設支援 GraalVM

下圖為 Quarkus 和傳統框架(SpringBoot) 等對比圖,更快的啟動資料、更小的記憶體消耗、更短的服務響應

Spring Boot 2.4 開始逐步提供對 GraalVM 的支援,旨在提升上文所述的 啟動、記憶體、響應的使用體驗

安裝 GraalVM目前官方社群版本最新為 20.3.0 ,是基於 OpenJDK 8u272 and 11.0.9 定製的,可以理解為 OpenJDK 的衍生版本 。官方推薦的是 SDKMAN[3] 用於快速安裝和切換不同版本 JDK 的工具 ,類似於 nodejs 的 nvm[4]

使用類似命令即可完成指定版本安裝和指定預設版本

sdk install java 11.0.9.hs-adpt
sdk default java 11.0.9.hs-adpt

不過安裝過程中需要從國外下載相關資源 ,筆者在嘗試後使用體驗並不是很好,所以建議大家下載指定版本 GraalVM 安裝即可(和 JDK 安裝方式一樣)。

安裝成功檢視版本
⋊> ~ java -version                                                      11:30:34openjdk version "11.0.9" 2020-10-20OpenJDK Runtime Environment GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06)OpenJDK 64-Bit Server VM GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06, mixed mode, sharing)
安裝 native-image

native-image 是由 Oracle Labs 開發的一種 AOT 編譯器,應用所需的 class 依賴項及 runtime 庫打包編譯生成一個單獨可執行檔案。具有高效的 startup 及較小的執行時記憶體開銷的優勢

但 GraalVM 並未內建只是提供 gu 安裝工具,需要我們單獨安裝。

啟動應用 這裡執行的編譯後的可執行檔案而不是 jar
cd target./com.example.demo.demoapplication
啟動時間 0.215 seconds
2020-12-18 12:30:40.625  INFO 94578 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 0.215 seconds (JVM running for 0.267)
看一下記憶體佔用 24.8203MB
ps aux | grep com.example.demo.demoapplication | grep -v grep | awk '{print $11 "\t" $6/1024"MB" }'./com.example.demo.demoapplication 24.8203MB
資料對比

是否引入 GraalVM 記憶體佔用 啟動時間 否 480.965MB 1135 ms 是 24.8203MB 215 ms

參考資料

[1]

GraalVM: https://www.graalvm.org

[2]

Quarkus: https://quarkus.io

[3]

SDKMAN: https://sdkman.io/install

[4]

nvm: https://github.com/creationix/nvm

[5]

Gitee Gist: https://gitee.com/gi2/codes/famcqz6n21iylpg3us7j036

29
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • TensorFuzz:使用覆蓋導向模糊測試除錯神經網路