java啟動jar包修改JVM默認內存問題
JVM默認物理內存
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。
默認空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制;空余堆內存大于70%時,JVM會減少堆直到-Xms的最小限制。
因此服務器一般設置-Xms、-Xmx相等以避免在每次GC后調整堆的大小。
設置JVM內存的參數(shù)有四個
-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)已經(jīng)運行了601天17小時8分鐘(在這期間沒有重啟過)
1users — 當前有1個用戶登錄系統(tǒng)
load average: 0.86, 0.73, 0.74 — load average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結果高于5的時候就表明系統(tǒng)在超負荷運轉了。
第二行:
Tasks — 任務(進程),系統(tǒng)現(xiàn)在共有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
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot中的yml文件中讀取自定義配置信息及遇到問題小結
這篇文章主要介紹了SpringBoot中的yml文件中讀取自定義配置信息,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06Java面向對象編程之繼承和多態(tài)以及包的解析與使用范例
繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作2021-11-11Spring中@RequestMapping、@RestController和Postman
本文介紹了Spring框架中常用的@RequestMapping和@RestController注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10