java啟動jar包修改JVM默認內存問題
JVM默認物理內存
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。
默認空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制;空余堆內存大于70%時,JVM會減少堆直到-Xms的最小限制。
因此服務器一般設置-Xms、-Xmx相等以避免在每次GC后調整堆的大小。
設置JVM內存的參數有四個
-XmxJava Heap最大值,默認值為物理內存的1/4,最佳設值應該視物理內存大小及計算機內其他內存開銷而定;
-XmsJava Heap初始值,Server端JVM最好將-Xms和-Xmx設為相同值,開發(fā)測試機JVM可以保留默認值;
-XmnJava Heap Young區(qū)大小,不熟悉最好保留默認值;
-Xss每個線程的Stack大小,不熟悉最好保留默認值;
操作步驟
1.執(zhí)行命令:free -h
查詢當前的內存占用情況(Mem是當前物理內存使用情況,Swap是swap交換分區(qū)使用情況)

2.執(zhí)行命令:top
查看各個應用的內存占用情況

第一行:
10:51:46— 當前系統(tǒng)時間
601days, 17:08— 系統(tǒng)已經運行了601天17小時8分鐘(在這期間沒有重啟過)
1users — 當前有1個用戶登錄系統(tǒng)
load average: 0.86, 0.73, 0.74 — load average后面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統(tǒng)在超負荷運轉了。
第二行:
Tasks — 任務(進程),系統(tǒng)現在共有163個進程,其中處于運行中的有1個,162個在休眠(sleep),stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個。
3. 啟動jar包
java -Xms1024m -Xmx1024m -Xmn700m -Xss16m -jar?xxx.jar &
-Xms1024m 設置JVM促使內存為1024M。此值可以設置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內存。
-Xmx1024m ,設置JVM最大可用內存為1024M。
-Xmn700m**:**設置年輕代大小為700M。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。此值對系統(tǒng)性能影響較大,Sun官方推薦配置為整個堆的 3/8。
-Xss16m:
4. 如果是tomcat項目啟動
則在bin目錄下,執(zhí)行命令:vim catalina.sh,然后在頂部加上:
JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn700m -Xss16m"
重新啟動項目之后,執(zhí)行命令查詢修改情況:jps -v

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot如何整合Springsecurity實現數據庫登錄及權限控制
這篇文章主要給大家介紹了關于SpringBoot如何整合Springsecurity實現數據庫登錄及權限控制的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-01-01
spring boot項目同時傳遞參數和文件的多種方式代碼演示
這篇文章主要介紹了spring boot項目同時傳遞參數和文件的多種方式,在開發(fā)接口中,遇到了需要同時接收參數和文件的情況,可以有多種方式實現文件+參數的接收,這里基于spring boot 3 + vue 3 + axios,做一個簡單的代碼演示,需要的朋友可以參考下2023-06-06
Java IO流體系繼承結構圖_動力節(jié)點Java學院整理
這篇文章主要介紹了Java IO流體系繼承結構圖,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05

