1. 程式人生 > >Spring cloud開發記憶體佔用過高解決方法

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
版權宣告:本文為博主原創文章,轉載請附上博文連結!