溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JVM 常用參數(shù)

發(fā)布時(shí)間:2020-08-04 01:09:52 來(lái)源:網(wǎng)絡(luò) 閱讀:673 作者:灰白世界 欄目:編程語(yǔ)言

常見(jiàn)參數(shù)配置

  • -XX:+PrintGC 每次觸發(fā)GC的時(shí)候打印相關(guān)日志
  • -XX:+UseSerialGC 串行回收
  • -XX:+PrintGCDetails 更詳細(xì)的GC日志
  • -Xms 堆初始值
  • -Xmx 堆最大可用值
  • -Xmn 新生代堆最大可用值
  • -XX:SurvivorRatio 用來(lái)設(shè)置新生代中eden空間和from/to空間的比例.
  • -XX:NewRatio 配置新生代與老年代占比 1:2
  • -XX:SurvivorRatio 用來(lái)設(shè)置新生代中eden空間和from/to空間的比例

總結(jié):在實(shí)際工作中,我們可以直接將初始的堆大小與最大堆大小相等,這樣的好處是可以減少程序運(yùn)行時(shí)垃圾回收次數(shù),從而提高效率

堆內(nèi)存大小配置

使用示例: -Xmx20m -Xms5m

當(dāng)前堆最大內(nèi)存 20M,堆初始化內(nèi)存 5M

設(shè)置新生代比例參數(shù)

使用示例:-Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

當(dāng)前堆最大內(nèi)存 20M,初始化堆內(nèi)存 20M,新生代最大可用內(nèi)存 1M,Eden 區(qū)域和 form、to 區(qū)域的比例是 2:1:1,打印 GC 日志,使用串行回收

設(shè)置新生代與老年代比例參數(shù)

使用實(shí)例:-Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:NewRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

當(dāng)前堆最大內(nèi)存 20M,初始化堆內(nèi)存 20M,Eden 區(qū)域和 form、to 區(qū)域的比例是 2:1:1,新生代和老年代比例是 1:2,打印 GC 日志,使用串行回收

Java堆溢出

錯(cuò)誤原因:java.lang.OutOfMemoryError: Java heap space 堆內(nèi)存溢出

設(shè)置合適的堆大小:-Xms1m -Xmx100m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError

最后的參數(shù)表示堆內(nèi)存溢出出打印快照

虛擬機(jī)棧溢出

錯(cuò)誤原因:java.lang.StackOverflowError 棧內(nèi)存溢出

虛擬機(jī)棧溢出發(fā)生在遞歸調(diào)用,循環(huán)不會(huì)產(chǎn)生虛擬機(jī)棧溢出,除非循環(huán)里面嵌套遞歸

設(shè)置更大的深度,默認(rèn)深度大概在 10000 左右

-Xss5m 設(shè)置最大調(diào)用深度

內(nèi)存溢出與內(nèi)存泄漏區(qū)別

內(nèi)存溢出:申請(qǐng)空間超出系統(tǒng)能夠提供的空間大小

內(nèi)存泄露:內(nèi)存泄露是指程序中間動(dòng)態(tài)分配了內(nèi)存,但在程序結(jié)束時(shí)沒(méi)有釋放這部分內(nèi)存,從而造成那部分內(nèi)存不可用的情況,最終導(dǎo)致內(nèi)存溢出

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI