1. 程式人生 > >Jboss—java.lang.OutOfMemoryError:Metaspace (解決記憶體溢位,擴大記憶體)

Jboss—java.lang.OutOfMemoryError:Metaspace (解決記憶體溢位,擴大記憶體)

講一講故事開頭吧,小菜自己覺得非常重要!

今天Jenkins構建專案後端成功,可怕的是到了伺服器上部署時就失敗了。開始拍錯,先是懷疑Jenkins在搗亂呢,因此在本地打包釋出,非常順利的成功了。把這個war包拿到伺服器上去部署,竟然失敗!排除Jenkins的嫌疑了。這就跑不了是伺服器在使壞了, 怎麼回事兒呢也不知道如何下手了,看看Jboss的日誌吧,很多有關定時器呼叫超時的錯誤提示,只有這麼一個特別的:java.lang.OutOfMemoryError:Metaspace。記憶體溢位,好,很好,那就來擴大就好了。

1、開啟Jboss下的bin/standalone.conf檔案
找到:
JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true"


修改:MaxMetaspaceSize=512m 儲存,很好。

2、將standalone.sh執行一下(我是在linux下操作的,如果你是Windows環境請直接點選執行standalone.bat檔案)
命令:./standalone.sh
執行這個命令時報錯了。提示有的地址正在使用,殺死所有程序來解決。
命令:kill -9 程序ID
再次執行:./standalone.sh

3、成功解決問題。

故事起因
是載入到記憶體中的 class 數量太多或者體積太大,然後JVM就會掛掉。主要是不會JVM優化,程式碼優化所導致。

怎樣避免呢?

還是要先學習鴨!這也是最大的收穫了,有知道了學習JVM的重要性了。加油鴨!