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

2.執(zhí)行命令:top
查看各個(gè)應(yīng)用的內(nèi)存占用情況

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

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot如何訪問不同的數(shù)據(jù)庫的方法實(shí)現(xiàn)
本文主要介紹了在SpringBoot應(yīng)用中配置和管理多個(gè)數(shù)據(jù)源的方法,包括使用SpringBoot官方支持的配置方式和第三方庫實(shí)現(xiàn)多數(shù)據(jù)源配置,感興趣的可以了解一下2024-11-11
SpringBoot如何整合Springsecurity實(shí)現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制
這篇文章主要給大家介紹了關(guān)于SpringBoot如何整合Springsecurity實(shí)現(xiàn)數(shù)據(jù)庫登錄及權(quán)限控制的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式代碼演示
這篇文章主要介紹了spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式,在開發(fā)接口中,遇到了需要同時(shí)接收參數(shù)和文件的情況,可以有多種方式實(shí)現(xiàn)文件+參數(shù)的接收,這里基于spring boot 3 + vue 3 + axios,做一個(gè)簡單的代碼演示,需要的朋友可以參考下2023-06-06
SpringBoot?如何將項(xiàng)目打包成?jar?包
這篇文章主要介紹了SpringBoot如何將項(xiàng)目打包成jar包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
SpringBoot使用AOP實(shí)現(xiàn)日志記錄功能詳解
這篇文章主要為大家介紹了SpringBoot使用AOP實(shí)現(xiàn)日志記錄功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java IO流體系繼承結(jié)構(gòu)圖_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java IO流體系繼承結(jié)構(gòu)圖,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
Spring?多數(shù)據(jù)源方法級別注解實(shí)現(xiàn)過程
多數(shù)據(jù)源管理是Spring框架中非常重要的一部分,它可以提高應(yīng)用程序的靈活性和可靠性,從而更好地滿足業(yè)務(wù)需求,這篇文章主要介紹了Spring?多數(shù)據(jù)源方法級別注解實(shí)現(xiàn),需要的朋友可以參考下2023-07-07

