JBoss下問題- java.lang.OutOfMemoryError: PermGen space

來源:互聯網
上載者:User

最近出現一個問題,在JBoss中部署完項目並運行時,請求網頁會報 java.lang.OutOfMemoryError: PermGen space

從網上搜資料後才知道,是由於PermGen space記憶體不足引起的。

分析原因:

1、 java.lang.OutOfMemoryError: PermGen space 從字面上也能看出是由於 PermGen space 的記憶體空間不足,而導致的記憶體溢出錯誤。

2、PermGen space的全稱是Permanent Generation space,是指記憶體的永久儲存地區。這一部分用於存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space地區,它和存放Instance的Heap地區不同,GC(Garbage Collection)不會在主程式運行期對PermGen space進行清理,所以如果你的APP會Load很多Class的話,就很可能出現PermGen space錯誤。這種錯誤常見在web伺服器對JSP進行pre compile的時候。

解決方案:

如果項目中引用了很多的 jar 包,那麼這些 jar 包中的 Class 資訊會被 JBoss 的 Class Loader 載入到 PermGen space 地區,而在 JVM 預設的情況下,該部分空間的大小隻有 4M,在 jar 包非常多的情況下,顯然是不夠用的。但可以通過 -XX:MaxPermSize=256m 指定最大值後即可解決問題。

CentOS 6.3下的解決步驟(其他系統類別似):

#cd /usr/local/jboss/bin#vim run.conf
修改run.conf中的JAVA_OPTS,增加 -XX:PermSize=256m -XX:MaxPermSize=512m 兩項內容,結果如下

JAVA_OPTS="-Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.