吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot為什么這么耗內(nèi)存

汽車玩家 ? 來(lái)源:Java技術(shù)架構(gòu) ? 作者:Java技術(shù)架構(gòu) ? 2020-05-05 22:34 ? 次閱讀

Spring Boot總體來(lái)說(shuō),搭建還是比較容易的,特別是Spring Cloud全家桶,簡(jiǎn)稱親民微服務(wù),但在發(fā)展趨勢(shì)中,容器化技術(shù)已經(jīng)成熟,面對(duì)巨耗內(nèi)存的Spring Boot,小公司表示用不起。如今,很多剛誕生的JAVA微服務(wù)框架大多主打“輕量級(jí)”,主要還是因?yàn)镾pring Boot太重。

JAVA系微服務(wù)框架

No1-Spring Cloud

介紹

有Spring大靠山在,更新、穩(wěn)定性、成熟度的問(wèn)題根本不需要考慮。在JAVA系混的技術(shù)人員大約都聽說(shuō)過(guò)Spring的大名吧,所以不缺程序員……,而且這入手的難度十分低,完全可以省去一個(gè)架構(gòu)師。

但是,你必然在服務(wù)器上付出:

至少一臺(tái)“服務(wù)發(fā)現(xiàn) ”的服務(wù)器;

可能有一個(gè)統(tǒng)一的網(wǎng)關(guān)Gateway;

可能需要一個(gè)用于“分布式配置管理”的配置中心

可能進(jìn)行“服務(wù)追蹤”,知道我的請(qǐng)求從哪里來(lái),到哪里去;

可能需要“集群監(jiān)控”;

項(xiàng)目上線后發(fā)現(xiàn),我們需要好多服務(wù)器,每次在集群中增加服務(wù)器時(shí),都感覺心疼;

壓測(cè)30秒

壓測(cè)前的內(nèi)存占用

Spring Boot為什么這么耗內(nèi)存

如圖,內(nèi)存占用304M。

壓測(cè)時(shí)的內(nèi)存占用

Spring Boot為什么這么耗內(nèi)存

如圖,內(nèi)存占用1520M(1.5G),CPU上升到321%

概覽

Spring Boot為什么這么耗內(nèi)存

總結(jié)

一個(gè)Spring Boot的簡(jiǎn)單應(yīng)用,最少1G內(nèi)存,一個(gè)業(yè)務(wù)點(diǎn)比較少的微服務(wù)編譯后的JAR會(huì)大約50M;而Spring Cloud引入的組件會(huì)相對(duì)多一些,消耗的資源也會(huì)相對(duì)更多一些。

啟動(dòng)時(shí)間大約10秒左右: Started Application in 10.153 seconds (JVM running for 10.915)

JAVA系響應(yīng)式編程的工具包Vert.x

介紹

背靠Eclipse的Eclipse Vert.x是一個(gè)用于在JVM上構(gòu)建響應(yīng)式應(yīng)用程序的工具包。定位上與Spring Boot不沖突,甚至可以將Vert.x結(jié)合Spring Boot使用。眾多Vert.x模塊提供了大量微服務(wù)的組件,在很多人眼里是一種微服務(wù)架構(gòu)的選擇。

華為微服務(wù)框架Apache ServiceComb就是以Vert.x為底層框架實(shí)現(xiàn)的,在"基準(zhǔn)測(cè)試網(wǎng)站TechEmpower"中,Vert.x的表現(xiàn)也十分亮眼。

壓測(cè)30秒

壓測(cè)前的內(nèi)存占用

Spring Boot為什么這么耗內(nèi)存

如圖,內(nèi)存占用65M。

壓測(cè)時(shí)的內(nèi)存占用

Spring Boot為什么這么耗內(nèi)存

如圖,內(nèi)存占139M,CPU占2.1%,給人的感覺似乎并沒有進(jìn)行壓測(cè)。

概覽

Spring Boot為什么這么耗內(nèi)存

總結(jié)

Vert.x單個(gè)服務(wù)打包完成后大約7M左右的JAR,不依賴Tomcat、Jetty之類的容器,直接在JVM上跑。

Vert.x消耗的資源很低,感覺一個(gè)1核2G的服務(wù)器已經(jīng)能夠部署許多個(gè)Vert.x服務(wù)。除去編碼方面的問(wèn)題,真心符合小項(xiàng)目和小模塊。git市場(chǎng)上已經(jīng)出現(xiàn)了基于Vert.x實(shí)現(xiàn)的開源網(wǎng)關(guān)- VX-API-Gateway幫助文檔

https://duhua.gitee.io/vx-api-gateway-doc

對(duì)多語(yǔ)言支持,很適合小型項(xiàng)目快速上線。

啟動(dòng)時(shí)間不到1秒:Started Vert.x in 0.274 seconds (JVM running for 0.274)

JAVA系其他微服務(wù)框架

SparkJava

jar比較小,大約10M

占內(nèi)存小,大約30~60MB;

性能還可以,與Spring Boot相仿;

Micronaut

Grails團(tuán)隊(duì)新寵;

可以用 Java、Groovy 和 Kotlin 編寫的基于微服務(wù)的應(yīng)用程序;

相比Spring Boot已經(jīng)比較全面;

性能較優(yōu),編碼方式與Spring Boot比較類似;

啟動(dòng)時(shí)間和內(nèi)存消耗方面比其他框架更高效;

多語(yǔ)言;

依賴注入;

內(nèi)置多種云本地功能;

很新,剛發(fā)布1.0.0

Javalin

上手極為容易;

靈活,可以兼容同步和異步兩種編程思路;

JAR小,4~5M;

多語(yǔ)言;

有KOA的影子;

只有大約2000行源代碼,源代碼足夠簡(jiǎn)單,可以理解和修復(fù);

符合當(dāng)今趨勢(shì);

多語(yǔ)言;

嵌入式服務(wù)器Jetty;

Quarkus

啟動(dòng)快;

JAR小,大約10M;

文檔很少;

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3055

    瀏覽量

    74338
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2975

    瀏覽量

    105161
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    校園點(diǎn)餐訂餐外賣跑腿Java源碼

    創(chuàng)建一個(gè)校園點(diǎn)餐訂餐外賣跑腿系統(tǒng)是一個(gè)復(fù)雜的項(xiàng)目,涉及到前端、后端、數(shù)據(jù)庫(kù)設(shè)計(jì)等多個(gè)方面。在這里,我可以提供一個(gè)簡(jiǎn)化的Java后端示例,使用Spring Boot框架來(lái)搭建一個(gè)基本的API服務(wù)。這個(gè)
    的頭像 發(fā)表于 12-24 14:55 ?185次閱讀
    校園點(diǎn)餐訂餐外賣跑腿Java源碼

    SSM開發(fā)環(huán)境的搭建教程 SSM與Spring Boot的區(qū)別

    SSM開發(fā)環(huán)境的搭建教程 SSM(Spring+SpringMVC+MyBatis)開發(fā)環(huán)境的搭建涉及多個(gè)步驟,以下是詳細(xì)的教程: 創(chuàng)建Maven項(xiàng)目 : 使用Maven工具創(chuàng)建一個(gè)新的Maven
    的頭像 發(fā)表于 12-16 18:13 ?672次閱讀

    Spring 應(yīng)用合并之路(二):峰回路轉(zhuǎn),柳暗花明

    提醒下,決定拋開 Spring Boot 內(nèi)置的父子容器方案,完全自己實(shí)現(xiàn)父子容器。 如何加載 web 項(xiàng)目? 現(xiàn)在的難題只有一個(gè):如何加載 web 項(xiàng)目?加載完成后,如何持續(xù)持有 web 項(xiàng)目?經(jīng)過(guò)思考后,可以創(chuàng)建一個(gè) boot
    的頭像 發(fā)表于 12-12 11:22 ?836次閱讀

    Spring事務(wù)實(shí)現(xiàn)原理

    作者:京東零售 范錫軍 1、引言 springspring-tx模塊提供了對(duì)事務(wù)管理支持,使用spring事務(wù)可以讓我們從復(fù)雜的事務(wù)處理中得到解脫,無(wú)需要去處理獲得連接、關(guān)閉連接、事務(wù)提交和回滾等
    的頭像 發(fā)表于 11-08 10:10 ?874次閱讀
    <b class='flag-5'>Spring</b>事務(wù)實(shí)現(xiàn)原理

    Spring Cloud Gateway網(wǎng)關(guān)框架

    SpringCloud Gateway功能特征如下: (1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進(jìn)行構(gòu)建; (2) 動(dòng)態(tài)路由:能夠匹配任何請(qǐng)求屬性;
    的頭像 發(fā)表于 08-22 09:58 ?545次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網(wǎng)關(guān)框架

    單片機(jī)boot0和boot1怎么設(shè)置

    單片機(jī)Boot0和Boot1簡(jiǎn)介 Boot0和Boot1是單片機(jī)啟動(dòng)模式選擇引腳,用于選擇單片機(jī)的啟動(dòng)模式。 Boot0和
    的頭像 發(fā)表于 08-22 09:50 ?3055次閱讀

    stm32讀取boot引腳狀態(tài)

    在STM32微控制器中,Boot引腳(通常指的是BOOT0和BOOT1引腳)的狀態(tài)決定了設(shè)備啟動(dòng)時(shí)的引導(dǎo)模式。這些引腳的狀態(tài)在復(fù)位時(shí)被讀取,并據(jù)此選擇啟動(dòng)哪塊存儲(chǔ)器。比如,STM32F103系列
    的頭像 發(fā)表于 08-22 09:48 ?1585次閱讀

    STM32引腳中的BOOT1在哪里

    STM32是STMicroelectronics(意法半導(dǎo)體)推出的一系列32位微控制器,廣泛應(yīng)用于嵌入式系統(tǒng)設(shè)計(jì)。關(guān)于STM32的BOOT1引腳,它主要與系統(tǒng)的啟動(dòng)模式有關(guān)。 BOOT1引腳功能
    的頭像 發(fā)表于 08-22 09:43 ?2390次閱讀

    stm32boot0和boot1對(duì)應(yīng)哪個(gè)p引腳

    STM32系列微控制器是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是兩個(gè)重要的引腳,它們用于設(shè)置設(shè)備的啟動(dòng)模式。 首先,讓我們了解STM32系列
    的頭像 發(fā)表于 08-22 09:40 ?3701次閱讀

    vue+spring boot人員定位系統(tǒng)源碼,實(shí)現(xiàn)實(shí)時(shí)定位、智慧調(diào)度、軌跡追蹤

    、機(jī)具、物料上定位標(biāo)簽回傳的位置信息數(shù)據(jù),采用多維定位模式,精確定位人、機(jī)具、物料的實(shí)時(shí)位置,實(shí)現(xiàn)實(shí)時(shí)定位、物料標(biāo)簽配置、智慧調(diào)度、軌跡追蹤、工時(shí)統(tǒng)計(jì)、區(qū)域物料統(tǒng)計(jì)、電子圍欄等應(yīng)用功能。 技術(shù)架構(gòu):java+ spring boot+ v
    的頭像 發(fā)表于 08-08 14:27 ?863次閱讀
    vue+<b class='flag-5'>spring</b> <b class='flag-5'>boot</b>人員定位系統(tǒng)源碼,實(shí)現(xiàn)實(shí)時(shí)定位、智慧調(diào)度、軌跡追蹤

    玩轉(zhuǎn)Spring狀態(tài)機(jī)

    說(shuō)起Spring狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒錯(cuò),Spring狀態(tài)機(jī)就是狀態(tài)模式的一種實(shí)現(xiàn),在介紹Spring狀態(tài)機(jī)之前,讓我們來(lái)看看設(shè)計(jì)模式中的狀態(tài)模式
    的頭像 發(fā)表于 06-25 14:21 ?1031次閱讀
    玩轉(zhuǎn)<b class='flag-5'>Spring</b>狀態(tài)機(jī)

    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+Spring boot+MYSQL?技術(shù)開發(fā)

    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+Spring boot+MYSQL?技術(shù)開發(fā) 系統(tǒng)聚焦基于UWB(超寬帶)技術(shù)的底層定位網(wǎng)絡(luò)和定位算法,通過(guò)對(duì)定位分站
    的頭像 發(fā)表于 06-18 10:46 ?538次閱讀
    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+<b class='flag-5'>Spring</b> <b class='flag-5'>boot</b>+MYSQL?技術(shù)開發(fā)

    Saturday只是一個(gè)枚舉元素啊,而today是一個(gè)枚舉變量,為什么他倆所占的內(nèi)存空間大小是一樣的? [

    #include \"stdio.h\" enum Season { spring, summer=100, fall=96, winter ,winter1
    發(fā)表于 05-10 07:07

    在MDK中使用RTT為什么內(nèi)存占用這么大?

    為什么在MDK中使用RTT ,內(nèi)存占用這么大?
    發(fā)表于 02-26 07:19

    SpingBoot的5個(gè)擴(kuò)展點(diǎn),超級(jí)實(shí)用!

    我們?cè)趩?dòng)Spring Boot項(xiàng)目的時(shí)候,是執(zhí)行這樣一個(gè)方法來(lái)啟動(dòng)的
    的頭像 發(fā)表于 02-22 11:28 ?536次閱讀
    SpingBoot的5個(gè)擴(kuò)展點(diǎn),超級(jí)實(shí)用!
    买车| 百家乐视频聊天游戏| 百家乐官网园是真的不| 德州扑克算牌| 新锦江百家乐官网赌场娱乐网规则| 百家乐三号的赢法| 壹贰博网| 百家乐上分器定位器| 东乡族自治县| 皇冠百家乐客户端皇冠| 登封市| 百家乐与龙虎斗怎么玩| 大安市| 保单百家乐游戏机厂家| 百家乐官网路的看法| 百家乐大白菜| 百家乐官网有无规律可循| 荷规则百家乐的玩法技巧和规则 | 曲靖市| 广州百家乐酒店用品制造有限公司| 彩票预测网| 百家乐太阳城娱乐城| 百家乐官网博彩策略论坛| 百家乐那里可以玩| 百家乐官网任你博娱乐| 大发888坑人么| 免费百家乐官网计划| 江津市| 百家乐博弈之赢者理论坛| 百家乐官网长龙太阳城| 大发888游戏代充| 博坊百家乐游戏| 百家乐官网分析软件下| 广州太阳城大酒店| 百家乐官网规则| 百家乐官网2号干扰| 希尔顿百家乐试玩| 百家乐官网透视牌靴哪里有| 尊博国际| 百家乐任你博娱乐平台| 新锦江百家乐官网娱乐场开户注册 |