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

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

如何將開發環境的 Spring Boot 應用程序內存降低 40% 以上

來源: 責編: 時間:2024-01-15 09:19:49 216觀看
導讀本文翻譯自:https://medium.com/@satanjim/how-we-reduced-the-memory-consumption-of-spring-boot-application-over-40-for-the-development-c8a5813fac23在開發基礎的 Spring Boot 應用程序時,我們需要考慮可承受的

本文翻譯自:https://medium.com/@satanjim/how-we-reduced-the-memory-consumption-of-spring-boot-application-over-40-for-the-development-c8a5813fac23jSx28資訊網——每日最新資訊28at.com

在開發基礎的 Spring Boot 應用程序時,我們需要考慮可承受的內存消耗。隨著添加更多依賴項,內存消耗也會增加。對于整體應用程序,通常仍然可以承受內存消耗,但當我們開發多個微服務并在本地計算機上運行時,這可能成為一場噩夢,影響開發效率。jSx28資訊網——每日最新資訊28at.com

Spring Boot 和 JVM 都帶有一些默認配置,適用于大多數情況,甚至在某些生產環境中也能勝任。但是如果我們能調整一些配置來適應本地開發,就可以顯著減少內存消耗。請注意,我不是 JVM 和 Spring Boot 方面的專家,只是想在這篇文章中分享一些我自己的經驗。jSx28資訊網——每日最新資訊28at.com

誰消耗了內存

首先,讓我們了解一下,到底是誰在消耗內存呢?沒錯,是 JVM。但是它是如何做到的呢?jSx28資訊網——每日最新資訊28at.com

要深入了解這個問題,我們需要了解 JVM 的內部結構,但這超出了本文的范圍。簡單來說,JVM 的內存消耗可以分成堆(Heap)、元空間(Metaspace)、每個線程的堆棧(Thread Stack)以及其他。jSx28資訊網——每日最新資訊28at.com

內存消耗內存消耗jSx28資訊網——每日最新資訊28at.com

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

為了減少內存消耗,我們需要向 JVM 顯式地傳遞一些參數。jSx28資訊網——每日最新資訊28at.com

首先,我們需要進行一些前置準備:jSx28資訊網——每日最新資訊28at.com

  • 安裝 Docker 和 docker-compose
  • 使用 Java 17 版本(但是 8 到最新版本之間的任何版本應該都可以,除了 Java 8 中的一些舊補丁)
  • 使用 Spring Boot

接下來,我們可以配置一些參數。創建一個名為"dev.jvm.conf"的文件,并輸入以下值(稍后我們會解釋這些值的含義):jSx28資訊網——每日最新資訊28at.com

# dev.jvm.conf# 覆蓋應用程序的屬性SERVER_TOMCAT_ACCEPT_COUNT=3SERVER_TOMCAT_MAX_CONNECTIONS=3SERVER_TOMCAT_THREADS_MAX=3SERVER_TOMCAT_THREADS_MIN_SPARE=1SPRING_MAIN_LAZY_INITIALIZATION=true# 設置JVM參數JAVA_TOOL_OPTIONS=-XX:+UseSerialGC -Xss512k -XX:MaxRAM=200m

然后,我們使用 docker-compose 將這些環境變量傳遞到容器中:jSx28資訊網——每日最新資訊28at.com

# docker-compose.ymlservices:  service1:    image: service1:dev    env_file:      - dev.jvm.conf  service2:    image: service2:dev    env_file:      - dev.jvm.conf

現在運行docker-compose up命令,您應該能看到一些差異。jSx28資訊網——每日最新資訊28at.com

接下來,讓我們詳細討論一下這些配置

在開始之前,請記住,降低某些值不會直接減少本地環境中的內存使用量,因為本地環境中通常不會有那么多請求。我們添加閾值的目的是,即使在本地環境中,如果我們開始收到更多請求,也要限制其數量。這最終將有助于限制內存使用。jSx28資訊網——每日最新資訊28at.com

  • SERVER_TOMCAT_ACCEPT_COUNT:該屬性設置了當所有可能的請求處理線程都在使用時,傳入連接請求的最大隊列長度。當服務器負載較重且所有工作線程都繁忙時,傳入的請求將被放入隊列中。如果隊列已滿,額外的連接請求將被拒絕。默認值為 100。
  • SERVER_TOMCAT_MAX_CONNECTIONS:該屬性定義了 Tomcat 服務器同時能夠處理的最大連接數。默認值為 8192。
  • SERVER_TOMCAT_THREADS_MAX:該屬性控制 Tomcat 服務器將創建的請求處理線程的最大數量。默認值為 200。
  • SERVER_TOMCAT_THREADS_MIN_SPARE:該屬性為嵌入式 Tomcat 服務器設置了最小備用線程數。默認值為 10。
  • SPRING_MAIN_LAZY_INITIALIZATION:將該屬性值設置為 true 意味著應用程序中的所有 bean 都將延遲初始化。這將有助于縮短啟動時間。
  • JAVA_TOOL_OPTIONS:使用該屬性,我們可以向 JVM 傳遞一些額外的參數。讓我們來談談其中的每個參數意義。
  • -XX:+UseSerialGC:這個參數會使 JVM 使用單線程進行內聯垃圾收集,而不是使用專用的 GC 線程。
  • -Xss512k:這個參數將每個線程的堆棧大小限制為 512KB,而不是默認的 1MB。
  • -XX:MaxRAM=200m:這個參數設置 JVM 最大可使用的 RAM 內存為 200MB。

這是一些簡單的調整,但它們可以在本地開發環境中顯著減少內存消耗。當然,根據您的具體情況,您可能需要進一步進行調整。這只是一個起點,您可以根據實際需求進行優化。jSx28資訊網——每日最新資訊28at.com

總結

總而言之,通過適當配置 JVM 和 Spring Boot,并理解內存消耗的原理,我們可以降低本地開發環境的內存消耗,提高工作效率。希望這些提示能對您有所幫助!jSx28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-60921-0.html如何將開發環境的 Spring Boot 應用程序內存降低 40% 以上

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

上一篇: 如何使用FluentResults優雅地處理結果和錯誤

下一篇: 程序員進階架構師必看的面試重災區:JVM整體架構、內存模型與調優實戰

標簽:
  • 熱門焦點
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人“珍藏”是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 自研Exynos回歸!三星Galaxy S24系列將提供Exynos和驍龍雙版本

    年初,全新的三星Galaxy S23系列發布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三個版本,全系搭載超頻版驍龍8 Gen 2,雖同樣采用臺積電4nm工藝制
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據10月30日9to5 Mac 消息報道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯的評價,亮點包括行業領先的性能,令人印象深刻的電池續航,精美豐
  • 電博會與軟博會實現"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發揮展會拉動人流、信息流、資金流實現快速交互流動的作用,繼而推動區域經濟良性發展;又可以聚
Top 主站蜘蛛池模板: 泰来县| 咸阳市| 武清区| 康保县| 元阳县| 乾安县| 定远县| 临澧县| 客服| 佛山市| 顺平县| 宜州市| 琼中| 灌云县| 望谟县| 张掖市| 临武县| 德格县| 聂拉木县| 安达市| 库车县| 兴安盟| 福鼎市| 博湖县| 永德县| 区。| 漳平市| 新泰市| 上犹县| 云浮市| 柘城县| 平度市| 成武县| 法库县| 丁青县| 招远市| 平谷区| 平潭县| 苏州市| 丹棱县| 青阳县|