电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring Boot 2.4新特性減少95%內存占用問題

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

節省 95%的內存占用,減少 80%的啟動耗時。

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

下圖為 Quarkus 和傳統框架(SpringBoot) 等對比圖,更快的啟動速度、更小的內存消耗、更短的服務響應。

Spring Boot 2.4新特性減少95%內存占用問題

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

安裝 GraalVM

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

Spring Boot 2.4新特性減少95%內存占用問題

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

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

sdk install java 11.0.9.hs-adptsdk 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 安裝工具,需要我們單獨安裝。

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

Spring Initializr 創建 demo 項目

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

先看一下啟動基準數據 , 單純運行空項目 需要 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

內存占用情況

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

增加相關依賴,涉及插件較多完整已上傳 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 構建可執行文件

mvn -Pnative package

#構建過程比較慢,日志如下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編譯結果

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

啟動應用 這里執行的編譯后的可執行文件而不是 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.demoapplication24.8203MB

數據對比

是否引入 GraalVM 內存占用 啟動時間 否 480.965MB 1135 ms 是 24.8203MB 215 ms

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 番茄畅听邀请码怎么输入 - Dianw8.com | 福建珂朗雅装饰材料有限公司「官方网站」| 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 |