亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot 2.4新特性減少95%內(nèi)存占用問題

瀏覽:96日期:2023-07-28 08:33:01

節(jié)省 95%的內(nèi)存占用,減少 80%的啟動(dòng)耗時(shí)。

GraalVM 是一種高性能的虛擬機(jī),它可以顯著的提高程序的性能和運(yùn)行效率,非常適合微服務(wù)。最近比較火的 Java 框架 Quarkus 默認(rèn)支持 GraalVM

下圖為 Quarkus 和傳統(tǒng)框架(SpringBoot) 等對(duì)比圖,更快的啟動(dòng)速度、更小的內(nèi)存消耗、更短的服務(wù)響應(yīng)。

Spring Boot 2.4新特性減少95%內(nèi)存占用問題

Spring Boot 2.4 開始逐步提供對(duì) GraalVM 的支持,旨在提升上文所述的 啟動(dòng)、內(nèi)存、響應(yīng)的使用體驗(yàn)。

安裝 GraalVM

目前官方社區(qū)版本最新為 20.3.0 ,是基于 OpenJDK 8u272 and 11.0.9 定制的,可以理解為 OpenJDK 的衍生版本。

Spring Boot 2.4新特性減少95%內(nèi)存占用問題

官方推薦的是 SDKMAN 用于快速安裝和切換不同版本 JDK 的工具 ,類似于 nodejs 的 nvm。

使用類似命令即可完成指定版本安裝和指定默認(rèn)版本

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

不過安裝過程中需要從國外下載相關(guān)資源 ,筆者在嘗試后使用體驗(yàn)并不是很好,所有建議大家下載指定版本 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 開發(fā)的一種 AOT 編譯器,應(yīng)用所需的 class 依賴項(xiàng)及 runtime 庫打包編譯生成一個(gè)單獨(dú)可執(zhí)行文件。具有高效的 startup 及較小的運(yùn)行時(shí)內(nèi)存開銷的優(yōu)勢。

但 GraalVM 并未內(nèi)置只是提供 gu 安裝工具,需要我們單獨(dú)安裝。

- 切換到 jdk 的安裝目錄⋊> ~ cd $JAVA_HOME/bin/- 使用gu命令安裝⋊> ./gu install native-image初始化 Spring Boot 2.4 項(xiàng)目

Spring Initializr 創(chuàng)建 demo 項(xiàng)目

curl https://start.spring.io/starter.zip -d dependencies=web -d bootVersion=2.4.1 -o graal-demo.zip

先看一下啟動(dòng)基準(zhǔn)數(shù)據(jù) , 單純運(yùn)行空項(xiàng)目 需要 1135 ms 秒

java -jar demo-0.0.1-SNAPSHOT.jarengine: [Apache Tomcat/9.0.41]2020-12-18 11:48:36.856 INFO 91457 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2020-12-18 11:48:36.856 INFO 91457 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1135 ms

內(nèi)存占用情況

ps aux | grep demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk ’{print $11 't' $6/1024'MB' }’/usr/bin/java480.965MB支持 GraalVM

增加相關(guān)依賴,涉及插件較多完整已上傳 Gitee Gist

<!-- 新增的部分,注意需要增加 spring maven 倉庫地址才能下載到--><dependency> <groupId>org.springframework.experimental</groupId> <artifactId>spring-graalvm-native</artifactId> <version>0.8.3</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-indexer</artifactId></dependency><!--需要添加 spring maven 倉庫下載 spring-graalvm-native--><repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository></repositories>

Main 方法修改,增加屬性 proxyBeanMethods = false

@SpringBootApplication(proxyBeanMethods = false)

使用 native-image 構(gòu)建可執(zhí)行文件

mvn -Pnative package

#構(gòu)建過程比較慢,日志如下spring.factories files...[com.example.demo.demoapplication:93430] classlist: 4,633.58 ms, 1.18 GB _____ __ __ __ _ / ___/ ____ _____ (_) ____ ____ _ / | / / ____ _ / /_ (_) _ __ ___ __ / __ / ___/ / / / __ / __ `/ / |/ / / __ `/ / __/ / / | | / / / _ ___/ / / /_/ / / / / / / / / / / /_/ / / /| / / /_/ / / /_ / / | |/ / / __//____/ / .___/ /_/ /_/ /_/ /_/ __, / /_/ |_/ __,_/ __/ /_/ |___/ ___/ /_/ /____/...[com.example.demo.demoapplication:93430] [total]: 202,974.38 ms, 4.23 GB編譯結(jié)果

在 targe 目錄生成 名稱為 com.example.demo.demoapplication 可執(zhí)行文件

啟動(dòng)應(yīng)用 這里執(zhí)行的編譯后的可執(zhí)行文件而不是 jar

cd target./com.example.demo.demoapplication

啟動(dòng)時(shí)間 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)

看一下內(nèi)存占用 24.8203MB

ps aux | grep com.example.demo.demoapplication | grep -v grep | awk ’{print $11 't' $6/1024'MB' }’./com.example.demo.demoapplication24.8203MB

數(shù)據(jù)對(duì)比

是否引入 GraalVM 內(nèi)存占用 啟動(dòng)時(shí)間 否 480.965MB 1135 ms 是 24.8203MB 215 ms

到此這篇關(guān)于Spring Boot 2.4新特性減少95%內(nèi)存占用問題的文章就介紹到這了,更多相關(guān)Spring Boot 2.4新特性內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 一级人做人a爰免费视频 | 视色4se成人午夜精品 | 国产乱辈通伦影片在线播放 | a4yy欧美一区二区三区 | 成人免费视频观看无遮挡 | 大伊香蕉在线精品不卡视频 | 欧美一二三区视频 | 成人在线激情网 | 在线观看日本三级 | 久青草视频在线播放 | 国产精品久久久久不卡绿巨人 | 一级毛片高清大全免费观看 | 国产日韩在线观看视频网站 | 久久香蕉国产线看观看乱码 | 丁香婷婷网 | 韩国特黄毛片一级毛片免费 | 涩涩网站在线观看 | 国产又色又爽又黄又刺激18 | 日产一一到六区麻豆 | 亚洲黄a| 九九视频免费精品视频免费 | 黄色仓库在线观看 | 欧美日韩在线观看区一二 | 亚洲天堂美女 | 丁香婷婷综合网 | 青草视频在线观看国产 | 亚洲欧美一区二区三区国产精品 | 国产 在线 | 日韩 | 国产视频第一页 | 在线欧美精品二区三区 | 国产成人精品日本亚洲语音 | 国产哺乳期奶水avav | 亚洲国产美女视频 | 亚洲一区二区日韩欧美gif | 欧美日韩中出 | 欧美成国产精品 | 国产a不卡片精品免费观看 国产a毛片高清视 | 国内特级毛片 | 免费看的黄色录像 | 黄色免费a级片 | 日本综合欧美一区二区三区 |