• java.lang.OutOfMemoryError: PermGen space有效解决方法


      PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

    解决方法

       一、手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(windows系统)或者catalina.sh(unix系统)

      1.windows系统  在 TOMCAT_HOME/bin/catalina.bat 文件 echo Using CATALINA_BASE:   "%CATALINA_BASE%"上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

      2.unix系统 在 catalina.sh 文件 echo "Using CATALINA_BASE:   $CATALINA_BASE"上面或者第一行加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

       或者加入 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

       

      二、如果启动Tomcat的时候是通过MyEclipse启动服务器的话,需要在MyEclipse里面同样设置内存大小

      原图上的文字:-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M  

      

      -Xms64m   -Xmx256m

      

      

    1、修改eclipse.ini 
    在Myeclipse安装目录下G:MyEclipse8.5GenuitecMyEclipse 8.5有一个myeclipse.ini配置文件,设置如下: 
    -vmargs
    -Xmx512m
    -XX:MaxPermSize=256m
    -XX:ReservedCodeCacheSize=64m

    2、设置Default VM Arguments 
    在myEclipse中,打开Windows-> Preferences->Java->Installed JREs->点击正在使用的JDK->Edit->Default VM Arguments文本框中输入:-Xms64m   -Xmx256m 

    3、如果是web工程还报内存溢出,可能就要设置tomcat内存。

    (1)tomcat的安装根目录%tomcat%bin/catalina.bat文件,SET JAVA_OPTS 一行;

    (2)myeclipse配置web服务器配置 Window—Preferences—Myeclipse—Servers—tomcat 5.x—JDK的Optional Java VM arguments配置为:

    -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    4、如果是debug模式运行,需要调整debug的虚拟机参数,因为debug模式的默认内存分配时很少的。  

    选择Arguments 在 VM arguments里面填写内存值如:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    一般的ini文件设置主要包括以下几项:
    -vmargs
    -Xms40m
    -Xmx256m
    -XX:PermSize=64M
    -XX:MaxPermSize=128M
    以下解释其意思。
    -vmargs:说明后面是VM的参数
    -Xms40m:虚拟机占用系统的最小内存
    -Xmx256m:虚拟机占用系统的最大内存
    -XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
                           堆空间剩余小于5%就会警告,建议把这个稍微设
                                   大一点,不过要视自己机器内存大小来设置
    -XX:MaxPermSize:最大堆大小。这个也适当大些
         所以若出现问题,首先请调整 -Xms40m:将其设置的小一些,就ok了,1g内存推荐设置为:
    -vmargs
    -Xms128M
    -Xmx512M
    -XX:PermSize=256M
    -XX:MaxPermSize=512M
    其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize
    -Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M
  • 相关阅读:
    Java中OutOfMemoryError(内存溢出)的情况及解决办法
    php strtotime函数服务器和本地不相同
    Object传入String类型和其他
    Java静态变量,常量,成员变量,局部变量
    Vector使用
    Java反射机制
    List和ArrayList,LinkList的区别
    phpstrtotime()对于31日求上个月有问题
    PGsql解决时差24H
    drawable 另外一种形式dimens.xml
  • 原文地址:https://www.cnblogs.com/learnapi/p/7641591.html
Copyright © 2020-2023  润新知