OutOfMemoryError

1. OutOfMemoryError: Java heap space  堆溢出

內存溢出主要存在問題就是出現在這個情況中。當在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常信息。

 2. OutOfMemoryError: PermGen space   非堆溢出(永久保存區域溢出)

這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。如果web app用了大量的第三方jar或者應用有太多的class文件而恰好MaxPermSize設置較小,超出了也會導致這塊內存的佔用過多造成溢出,或者tomcat熱部署時侯不會清理前面加載的環境,只會將context更改爲新部署的,非堆存的內容就會越來越多。

3. OutOfMemoryError: unable to create new native thread.   無法創建新的線程

這種現象比較少見,也比較奇怪,主要是和jvm與系統內存的比例有關。這種怪事是因爲JVM已經被系統分配了大量的內存(比如1.5G),並且它至少要佔用可用內存的一半。

 

 

解決:

eclipse 中:

在eclipse根目錄下打開eclipse.ini

-vmargs
-Xms256m
-Xmx1024m

tomcat中:

bin目錄下的catalina.bat

在第二行( @echo off 下)添加如下代碼:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=512M -XX:MaxPermSize=512m

 

 

 

原理:

https://yq.aliyun.com/articles/609276?utm_content=m_1000007074

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章