成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
總而言之,通過適當配置 JVM 和 Spring Boot,并理解內存消耗的原理,我們可以降低本地開發環境的內存消耗,提高工作效率。希望這些提示能對您有所幫助!

本文翻譯自:https://medium.com/@satanjim/how-we-reduced-the-memory-consumption-of-spring-boot-application-over-40-for-the-development-c8a5813fac23

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

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

誰消耗了內存

首先,讓我們了解一下,到底是誰在消耗內存呢?沒錯,是 JVM。但是它是如何做到的呢?

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

內存消耗內存消耗

為了減少內存消耗,我們需要向 JVM 顯式地傳遞一些參數。

首先,我們需要進行一些前置準備:

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

接下來,我們可以配置一些參數。創建一個名為"dev.jvm.conf"的文件,并輸入以下值(稍后我們會解釋這些值的含義):

# dev.jvm.conf
# 覆蓋應用程序的屬性
SERVER_TOMCAT_ACCEPT_COUNT=3
SERVER_TOMCAT_MAX_CONNECTIONS=3
SERVER_TOMCAT_THREADS_MAX=3
SERVER_TOMCAT_THREADS_MIN_SPARE=1
SPRING_MAIN_LAZY_INITIALIZATION=true

# 設置JVM參數
JAVA_TOOL_OPTIONS=-XX:+UseSerialGC -Xss512k -XX:MaxRAM=200m

然后,我們使用 docker-compose 將這些環境變量傳遞到容器中:

# docker-compose.yml
services:
  service1:
    image: service1:dev
    env_file:
      - dev.jvm.conf

  service2:
    image: service2:dev
    env_file:
      - dev.jvm.conf

現在運行docker-compose up命令,您應該能看到一些差異。

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

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

  • 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。

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

總結

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

責任編輯:武曉燕 來源: waynblog
相關推薦

2011-05-24 16:09:57

Androi

2019-07-15 10:00:53

DockerJava容器

2019-07-15 16:00:24

Docker架構容器

2012-08-17 11:04:57

IBMdW

2022-09-19 00:37:13

SaaS云計算開發

2010-02-05 18:21:24

Android應用程序

2024-01-18 07:53:37

2010-08-26 22:05:05

2018-12-11 11:41:14

物聯網應用程序IOT

2023-03-01 13:54:53

Springpostion?繼承

2023-11-06 13:11:22

Docker映像Builkit

2013-11-19 15:35:01

2009-11-16 17:33:47

2011-02-22 14:42:52

AndroidPad

2021-11-24 09:00:00

云計算開發應用

2019-03-06 15:02:56

應用程序Windows 10 右鍵單擊菜單

2010-09-10 09:50:33

iPhone軟件iPhone

2023-06-12 17:59:48

2015-03-16 10:47:22

數據中心應用程序軟件開發

2017-09-20 09:46:38

Spring BootSpring Clou內存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲性视频| 在线观看免费av网 | 国产精品日韩欧美一区二区三区 | 欧美性受 | 久久久999免费视频 999久久久久久久久6666 | 亚洲一区二区三区免费在线观看 | 久久精品久久久久久 | 国产特级毛片aaaaaa喷潮 | 亚洲精品一区二区三区中文字幕 | 成人免费精品视频 | 精品三级在线观看 | 国产二区av | 91麻豆精品国产91久久久久久 | 欧美视频在线播放 | 亚洲综合色丁香婷婷六月图片 | 美国一级黄色片 | 成年人在线视频 | 欧美日韩一卡 | 久久一热 | 午夜视频免费在线观看 | 久久久久久久香蕉 | 欧美日韩激情 | 色综合一区 | 亚洲高清中文字幕 | 日韩精品一区二区三区视频播放 | 精品欧美一区二区精品久久久 | 国产黄色小视频在线观看 | 视频一区二区在线观看 | 亚洲狠狠爱 | 男女在线网站 | 欧美一级在线观看 | 91久久久www播放日本观看 | 国产精品久久久久久久久久久久午夜片 | 久久人人爽人人爽 | 午夜av电影院 | 性国产xxxx乳高跟 | 亚洲欧洲国产视频 | 在线日韩视频 | 日韩欧美三区 | 亚洲区一区二区 | 亚洲精品一 |