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