內(nèi)存溢出-修改虛擬機(jī)參數(shù)

原博客地址:點(diǎn)擊

設(shè)置下Jvm參數(shù):

方式一:如果你用的是IDEA等開發(fā)工具,來啟動運(yùn)行項(xiàng)目,那么要調(diào)試JDK就方便太多了。只需要將參數(shù)值設(shè)置到VM options中即可。

-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC

方式二:適用于在項(xiàng)目部署后,在啟動的時(shí)候,采用腳本或者命令行運(yùn)行的時(shí)候設(shè)置。

執(zhí)行啟動設(shè)置Jvm參數(shù)的操作。

$ java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC newframe-1.0.0.jar

關(guān)于這些設(shè)置的JVM參數(shù)是什么意思:

-XX:MetaspaceSize=128m (元空間默認(rèn)大小)

?-XX:MaxMetaspaceSize=128m (元空間最大大小)?

-Xms1024m (堆默認(rèn)大小)?

-Xmx1024m (堆最大大小)?

-Xmn256m (新生代大小)?

-Xss256k (棧最大深度大小)?

-XX:SurvivorRatio=8 (新生代分區(qū)比例 8:2)?

-XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,這里使用CMS收集器)?

-XX:+PrintGCDetails (打印詳細(xì)的GC日志)

//?JVM最小分配內(nèi)存(初始分配內(nèi)存)由-Xms指定,默認(rèn)是物理內(nèi)存的1/64

//?JVM最大分配的內(nèi)存由-Xmx指定,默認(rèn)是物理內(nèi)存的1/4

注意:

JDK8之后把-XX:PermSize 和 -XX:MaxPermGen移除了,取而代之的是 -XX:MetaspaceSize=128m (元空間默認(rèn)大小) -XX:MaxMetaspaceSize=128m (元空間最大大小) JDK 8開始把類的元數(shù)據(jù)放到本地化的堆內(nèi)存(native heap)中,這一塊區(qū)域就叫Metaspace,中文名叫元空間。使用本地化的內(nèi)存有什么好處呢?最直接的表現(xiàn)就是java.lang.OutOfMemoryError: PermGen 空間問題將不復(fù)存在,因?yàn)槟J(rèn)的類的元數(shù)據(jù)分配只受本地內(nèi)存大小的限制,也就是說本地內(nèi)存剩余多少,理論上Metaspace就可以有多大(貌似容量還與操作系統(tǒng)的虛擬內(nèi)存有關(guān)?這里不太清楚),這解決了空間不足的問題。不過,讓Metaspace變得無限大顯然是不現(xiàn)實(shí)的,因此我們也要限制Metaspace的大?。菏褂?XX:MaxMetaspaceSize參數(shù)來指定Metaspace區(qū)域的大小。JVM默認(rèn)在運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)地設(shè)置MaxMetaspaceSize的大小。

原因:批量執(zhí)行執(zhí)行計(jì)劃導(dǎo)致內(nèi)存溢出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容