Spring cloud開發內存占用過高解決方法


https://blog.csdn.net/wanhuiguizong/article/details/79289986

 

版權聲明:本文為博主原創文章,轉載請聲明文章來源和原文鏈接。 https://blog.csdn.net/wanhuiguizong/article/details/79289986
問題:
在開發spring cloud過程中一個很嚴重的資源問題就是內存占用過高,而實際上本機開發測試並沒有很大的請求量,所以這是對電腦資源的一種嚴重的浪費,甚至導致IDE卡死、崩潰。

一個完整包含eureka,steam,sleuth,config,rabbit,oauth2等一些列spring cloud全家桶應用和其他業務相關組件組成的單個服務在12G內存電腦上啟動占用的內存就達到1到1.5G。如果同時需要啟動很多個服務,內存完全不夠用。

解決方法:
修改IDE針對每個項目的jvm參數。

這里以idea為例:

1.  打開Edit Configurations
Idea右上角,如圖:

 

2.參考如下配置:

左邊如果是spring cloud 的話肯定是在spring boot下,如果沒有,可以點擊左上角的+號手動添加,一般啟動過的項目這里會有的。

關於jvm參數后面會講。

這里要注意的是,register項目不需要太多資源(我這里設置128M),Gateway和config服務可以比register多一點(256M)。其它業務性服務才需要更多的資源(512M)。

請根據自己電腦配置情況調整,我的電腦是12G內存。

2.  關於jvm配置
參考1:http://blog.csdn.net/sdujava2011/article/details/50086933有如下描述

1. 設置JVM內存的參數有四個:

 -Xmx   Java Heap最大值,默認值為物理內存的1/4,最佳設值應該視物理內存大小及計算機內其他內存開銷而定;

 -Xms   Java Heap初始值,Server端JVM最好將-Xms和-Xmx設為相同值,開發測試機JVM可以保留默認值;

 -Xmn   Java Heap Young區大小,不熟悉最好保留默認值;

 -Xss   每個線程的Stack大小,不熟悉最好保留默認值;

 參考2: https://www.cnblogs.com/w-wfy/p/6415856.html有如下描述:

一般用到最多的是

 -Xms512m  設置JVM促使內存為512m。此值可以設置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內存。

 -Xmx512m ,設置JVM最大可用內存為512M。

 -Xmn200m:設置年輕代大小為200M。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。

 -Xss128k:設置每個線程的堆棧大小。JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。

效果
效果很明顯

12G內存啟動了14個服務和其他各種軟件(idea 3個),內存占用如下圖:

 


---------------------
作者:wanhuiguizong
來源:CSDN
原文:https://blog.csdn.net/wanhuiguizong/article/details/79289986
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM