java.lang.OutOfMemory 小結

 

1、場景: 在Linux 部署生產系統環境時,在啓動運行 搭建好的tomcat時,報錯如下

OutOfMemoryError: PermGen space 永久保存區域

 

這種情況發生的原因是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與Permanent Generation space有關。

    解決這類問題有以下兩種辦法:
    1. 增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。

    在項目中大多情況下都需要在tomcat6.0的啓動文件中catalina.sh 或catalina.bat 增加下面的一行:
JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"


    2. 如果tomcat部署了多個應用,並且這些應用都使用了相同的jar,可以將共同的jar移到tomcat的lib下,減少類的重複加載

 

2、在 IDE環境中,時不時 報出 OutOfMemoryError:  Java heap space 堆棧溢出

 解決這類問題有兩種思路:
   1. 減少不必要地對象的創建,儘可能不要在循環中重複創建對象。
   2. 增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

 

3、OutOfMemoryError:unable to create new native thread

 

這種情況在Java線程個數很多的情況下容易發生

 

如何監視jvm內存?

使用jvisualvm

 

發佈了148 篇原創文章 · 獲贊 10 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章