本文翻譯自: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 顯式地傳遞一些參數。
首先,我們需要進行一些前置準備:
接下來,我們可以配置一些參數。創建一個名為"dev.jvm.conf"的文件,并輸入以下值(稍后我們會解釋這些值的含義):
# 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 將這些環境變量傳遞到容器中:
# docker-compose.ymlservices: service1: image: service1:dev env_file: - dev.jvm.conf service2: image: service2:dev env_file: - dev.jvm.conf
現在運行docker-compose up命令,您應該能看到一些差異。
在開始之前,請記住,降低某些值不會直接減少本地環境中的內存使用量,因為本地環境中通常不會有那么多請求。我們添加閾值的目的是,即使在本地環境中,如果我們開始收到更多請求,也要限制其數量。這最終將有助于限制內存使用。
這是一些簡單的調整,但它們可以在本地開發環境中顯著減少內存消耗。當然,根據您的具體情況,您可能需要進一步進行調整。這只是一個起點,您可以根據實際需求進行優化。
總而言之,通過適當配置 JVM 和 Spring Boot,并理解內存消耗的原理,我們可以降低本地開發環境的內存消耗,提高工作效率。希望這些提示能對您有所幫助!
本文鏈接:http://www.www897cc.com/showinfo-26-60921-0.html如何將開發環境的 Spring Boot 應用程序內存降低 40% 以上
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com