permgen space
的全稱是permanent generation space,是指內存的永久保存區域outofmemoryerror: permgen space
。從文字上看就是內存溢出,解決方法是加大內存。為什么會內存溢出,這是由于這塊內存主要是被jvm
存放class
和meta
信息的,class在被load
的時候被放入permgen space
區域,它和存放instance
的heap
區域不同,gc
(garbage collection)不會在主程序運行期對permgen space
進行清理,所以如果你的app會load很多class的話,就很可能出現permgen space錯誤。這種錯誤常見在web服務器對jsp進行pre compile的時候。如果你的web app下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4m)那么就會產生此錯誤信息了。
問題背景:
tomcat
啟動了太多的項目,或者有的項目引用了太多的jar
包,或者反射生成了太多的類,異或有太多的常量池,就有可能會報java.lang.outofmemoryerror: permgen space
的錯誤,我們知道可以通過jvm
參數 -xx:maxpermsize=256m
來配置這部分堆內存的大小。
在eclipse
中如何配置tomcat
的內存大小呢?
手動設置maxpermsize大小
首先需要雙擊tomcat server
,如下圖所示:
雙擊上圖后會出現,tomcat
配置的界面:
然后再點擊上圖的,紅色矩形框的鏈接,會彈出tomcat
參數配置的節面,要選擇arguments
參數框:
如上圖在vm arguments
文本框內設置 -xx:maxpermsize=256m
的值即可, 當然此處還可以添加其他jvm
參數,比如最大內存,最小內存等。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/moneyshi/article/details/51007109