問題
在開發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記憶體,
3.關于jvm配置
參考1:
http://blog.csdn.net/sdujava2011/article/details/50086933
設定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個),記憶體占用如下圖:

原文鏈接:https://blog.csdn.net/wanhuiguizong/article/details/79289986
著作權宣告:本文為CSDN博主「wanhuiguizong」的原創文章,遵循CC 4.0 BY-SA著作權協議,轉載請附上原文出處鏈接及本宣告,
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.別在再滿屏的 if/ else 了,試試策略模式,真香!!
3.臥槽!Java 中的 xx ≠ null 是什么新語法?
4.Spring Boot 2.5 重磅發布,黑暗模式太炸了!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294603.html
標籤:Java
