日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

構建第一個GraalVM應用鏡像,體驗毫秒級極速啟動!

來源: 責編: 時間:2023-10-10 18:31:42 341觀看
導讀介紹GraalVM使用其Ahead-Of-Time(AOT)編譯器將Java應用程序編譯為機器可執行文件。這些可執行文件可以直接在目標機器上執行,而無需使用即時編譯器(JIT)。GraalVM生成的二進制文件體積較小,啟動速度快,并且在沒有任何預熱的

介紹

s3t28資訊網——每日最新資訊28at.com

GraalVM使用其Ahead-Of-Time(AOT)編譯器將Java應用程序編譯為機器可執行文件。這些可執行文件可以直接在目標機器上執行,而無需使用即時編譯器(JIT)。GraalVM生成的二進制文件體積較小,啟動速度快,并且在沒有任何預熱的情況下提供最佳性能。此外,這些可執行文件的內存占用和CPU使用率低于在JVM上運行的應用程序。s3t28資訊網——每日最新資訊28at.com

Docker允許我們將軟件組件打包成Docker鏡像,并作為Docker容器運行。Docker容器包含應用程序運行所需的一切,包括應用代碼、運行時、系統工具和庫。s3t28資訊網——每日最新資訊28at.com

在本文中,我們創建一個Java應用程序的GraalVM原生鏡像,并將其作為Docker容器運行。s3t28資訊網——每日最新資訊28at.com

什么是原生鏡像?

原生鏡像是一種將Java代碼提前編譯成本地可執行文件的技術。這個本地可執行文件只包含在運行時需要執行的代碼,包括應用程序類、標準庫類、語言運行時以及來自JDK的靜態鏈接的本機代碼。s3t28資訊網——每日最新資訊28at.com

原生鏡像構建器(native-image)掃描應用程序類和其他元數據,來創建特定于操作系統和架構的二進制文件。native-image工具對應用程序代碼進行靜態分析,確定在應用程序運行時可達到的類和方法。然后,它將所需的類、方法和資源編譯成一個二進制可執行文件。s3t28資訊網——每日最新資訊28at.com

原生鏡像的好處

原生鏡像可執行文件具有以下幾個優點:s3t28資訊網——每日最新資訊28at.com

  • 由于原生鏡像構建器僅編譯運行時所需的資源,因此可執行文件較小。
  • 原生可執行文件具有非常快的啟動時間,因為它們在目標機器上直接執行,而無需使用JIT編譯器。
  • 由于只打包所需的應用程序資源,提供了較小的被攻擊面。
  • 適用于打包到輕量級容器鏡像(例如Docker鏡像)中,以實現快速高效的部署。

構建GraalVM原生鏡像

在本節中,我們將為一個Spring Boot應用程序構建一個GraalVM原生鏡像。首先,需要安裝GraalVM并設置JAVA_HOME環境變量。其次,創建一個帶有Spring Web和GraalVM原生支持依賴的Spring Boot應用程序:s3t28資訊網——每日最新資訊28at.com

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <version>3.1.4</version></dependency>

還需要添加以下插件以支持GraalVM原生鏡像:s3t28資訊網——每日最新資訊28at.com

<build>    <plugins>        <plugin>            <groupId>org.graalvm.buildtools</groupId>            <artifactId>native-maven-plugin</artifactId>            <version>0.9.27</version>        </plugin>    </plugins></build>

該應用程序包含一個REST Controller 示例:s3t28資訊網——每日最新資訊28at.com

@RestControllerclass HelloController {	    @GetMapping    public String hello() {	    return "Hello GraalVM";    }}

使用Maven命令構建原生可執行文件:s3t28資訊網——每日最新資訊28at.com

$mvn -Pnative native:compile

使用native-maven-plugin構建GraalVM原生鏡像。由于GraalVM原生鏡像編譯器執行靜態代碼分析,與常規的Java應用程序編譯相比,構建時間較長。s3t28資訊網——每日最新資訊28at.com

以下是GraalVM編譯的輸出示例:s3t28資訊網——每日最新資訊28at.com

========================================================================================================================GraalVM Native Image: Generating 'springboot-graalvm-docker' (executable)...========================================================================================================================<strong>[1/8] Initializing... (42.7s @ 0.15GB)</strong>Java version: 17.0.8+9-LTS, vendor version: Oracle GraalVM 17.0.8+9.1Graal compiler: optimization level: 2, target machine: x86-64-v3, PGO: ML-inferredC compiler: gcc (linux, x86_64, 11.3.0)Garbage collector: Serial GC (max heap size: 80% of RAM)// 省略不重要日志<strong>[2/8] Performing analysis... [******] (234.6s @ 1.39GB)</strong>15,543 (90.25%) of 17,222 types reachable25,854 (67.59%) of 38,251 fields reachable84,701 (65.21%) of 129,883 methods reachable4,906 types, 258 fields, and 4,984 methods registered for reflection64 types, 70 fields, and 55 methods registered for JNI access4 native libraries: dl, pthread, rt, z[3/8] Building universe... (14.7s @ 2.03GB)[4/8] Parsing methods... [*******] (55.6s @ 2.05GB)[5/8] Inlining methods... [***] (4.9s @ 2.01GB)[6/8] Compiling methods... [**********[6/8] Compiling methods... [*******************] (385.2s @ 3.02GB)[7/8] Layouting methods... [****] (14.0s @ 2.00GB)[8/8] Creating image... [*****] (30.7s @ 2.72GB)48.81MB (58.93%) for code area: 48,318 compilation units30.92MB (37.33%) for image heap: 398,288 objects and 175 resources3.10MB ( 3.75%) for other data82.83MB in total// 省略不重要日志Finished generating 'springboot-graalvm-docker' in 13m 7s.// 省略不重要日志

在上述編譯輸出中需要關注一些關鍵點,如下:s3t28資訊網——每日最新資訊28at.com

  • 編譯使用GraalVM的Java編譯器來編譯應用程序。
  • 編譯器對類型、字段和方法進行可達性檢查。
  • 然后編譯構建原生可執行文件,并顯示可執行文件的大小和編譯所花費的時間。
  • 成功構建后,我們可以在目標目錄中找到原生可執行文件。該可執行文件可以在命令行中執行。

構建Docker鏡像

接下來為前一步生成的原生可執行文件開發一個Docker鏡像。s3t28資訊網——每日最新資訊28at.com

創建一個Dockerfile:s3t28資訊網——每日最新資訊28at.com

FROM ubuntu:jammyCOPY target/springboot-graalvm-docker /springboot-graalvm-dockerCMD ["/springboot-graalvm-docker"]

接下來,使用如下命令構建Docker鏡像:s3t28資訊網——每日最新資訊28at.com

$docker build -t springboot-graalvm-docker .

成功構建后,可以看到`springboot-graalvm-docker`的Docker鏡像已經可以使用了:s3t28資訊網——每日最新資訊28at.com

$docker images | grep springboot-graalvm-docker

可以使用以下命令執行這個鏡像:s3t28資訊網——每日最新資訊28at.com

$docker run -p 8080:8080 springboot-graalvm-docker

上述命令啟動了容器,Spring Boot的啟動日志如下:s3t28資訊網——每日最新資訊28at.com

// 省略不重要日志***  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization <strong>completed in 14 ms</strong>***  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''***  INFO 1 --- [           main] c.b.g.GraalvmDockerImageApplication      : Started GraalvmDockerImageApplication in 0.043 seconds (process running for 0.046)

應用程序在43毫秒內啟動。我們可以訪問REST端點:s3t28資訊網——每日最新資訊28at.com

$curl localhost:8080

輸出如下:s3t28資訊網——每日最新資訊28at.com

Hello GraalVM


s3t28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-12729-0.html構建第一個GraalVM應用鏡像,體驗毫秒級極速啟動!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 從 ELK/EFK 到 PLG,是時候換個日志框架了

下一篇: 如何校驗內存數據的一致性,DynamicExpresso 算是幫上大忙了

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • 引領旗艦級影像能力向中端機普及 OPPO K11 系列發布 1799 元起

    7月25日,OPPO正式發布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
Top 主站蜘蛛池模板: 姜堰市| 桐城市| 无极县| 建阳市| 长白| 瑞丽市| 咸宁市| 兴城市| 淳化县| 建始县| 长阳| 广水市| 姚安县| 广平县| 延吉市| 萝北县| 抚顺县| 海原县| 凌海市| 泸州市| 商城县| 绥棱县| 七台河市| 大新县| 屏边| 广灵县| 襄城县| 沐川县| 扬州市| 伊春市| 丹阳市| 宣化县| 清原| 灌阳县| 永吉县| 游戏| 乌审旗| 洛阳市| 疏附县| 抚宁县| 营口市|