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