• eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法


    解决这个问题之前,我们先来了解一下什么是PermGen space

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。

    说说为什么会内存益出
    (1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
    (2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

    如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
    建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存

    第一步:双击tomcat服务器->Overview->Open lauch configuration -->Arguments

    也可以通过下面的方式打开上面的界面:

    点击“Run” – “Run Configurations…”,选中Tomcat Server,进入Arguments分页

    第二步:修改VM arguments 配置,加入提升初始分配空间的参数

    -Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256M 

    参数的解释

    -Xms256m : 表示虚拟机占用系统的最小内存为256M。

    -Xmx1024m :表示虚拟机占用系统的最大内存为1024M.

    -XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,堆空间剩余容量小于5%就会警告,建议把这个稍微设大一点,视自己机器内存大小来设置

    -XX:MaxPermSize:最大堆大小。这个也适当大些

    补充知识点

    Linux下如何修改JVM内存大小

    要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.

    # OS specific support. $var _must_ be set to either true or false.
    JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
    cygwin=false

  • 相关阅读:
    前端TypeScript编写的代码发布后怎么在浏览器中调试
    oracle中的执行计划
    oracle中的物化视图
    oracle中的exists 和not exists 用法
    Oracle中的索引详解
    Oracle中动态SQL拼接
    oracle 中sql优化的几种方法
    oracle中常用函数大全
    Oracle中游标的用法
    oracle中表分区的实现
  • 原文地址:https://www.cnblogs.com/jepson6669/p/9040438.html
Copyright © 2020-2023  润新知