• java.lang.OutOfMemoryError: PermGen space


    最近公司的网站在manager下重启几次后,老是出现java.lang.OutOfMemoryError: PermGen space,这个错误,但是在网上查了很多都说是需要增大内存.说增大内存就能解决完事了,

    但是这个不是太让人信服,我怕我增大之后,还会出现,到时候丢人就丢大了!于是我自己在本机上测试,并且通过,jconsole监控我的jvm,终于找到了点有用的东西! 

    这个是写的错误报告:

    内 存中分 堆内存 和 非堆内存 ,堆内存只要存储的是变量 数据之内的东西, java 的GC会在内存还剩10%左右的时候进行清理, 但是当内存中加 载的数据量过于庞大,如一次从数据库取出过多数据 这个地方会报   OutOfMemoryError: Heap space  错误

    在 非堆内存(permanent)中,主要存储类的定义等不怎么变的数据。反复部署应用程序很多遍后,tomcat往往难以处理复杂的类依赖关系, 对 permanent区域的内存回收更是很困难的,最后导致越用越多,几遍之后这个区域就不够用了,而这个区域又是不能增长,并且不会GC...  之后便 会报java.lang.OutOfMemoryError: PermGen space

    省了些东西(图片你们可以在 java的bin目录下使用jconcole 检测,一样的)

    我认为原因是:反复部署应用程序很多遍后,tomcat往往难以处理复杂的类依赖关系, 对permanent区域的内存回收更是很困难的,才会报这个错的,

    我希望每次的部署完成,能进行tomcat重启,或者加大PermGen space 这块内存,

     解决方法: 手动设置MaxPermSize大小
       a.如果tomcat是以bat方式启动的,则如下设置:
       修改TOMCAT_HOME/bin/catalina.sh
       在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
       JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
       b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。
        打开注册表,找到目录HKEY_LOCAL_MACHINESOFTWAREApache Software Foundation Procrun 2.0htftyParametersJava,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为 tomcat服务注册成 windows服务的名称。 可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参数,JvmMx设置最大的 内存使用参数。设置好JvmMs和JvmMx项的值,重 启tomcat服务器即可生效。
       建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

  • 相关阅读:
    SQL中的cast和convert用法示例
    SpendidCRM:在adminlayout中修改了视图上的字段后,用MyGeneration生成修改脚本
    [转]ASP.NET数据绑定方法
    商城 5051课 纪要
    .net判断用户是否已登录
    Jquery 监视按键,按下回车键触发某方法
    Sharepoint中三个强力的工具(WPManager, OSSEventManager, FriendlyQuery),另增清除已删除用户
    错误处理:此网页不允许使用基本类型"System.Web.UI.MasterPage”该类型未注册为安全类型
    MOSS页面显示“根级别上的数据无效”
    读取/设置超链接或图片类型栏的值
  • 原文地址:https://www.cnblogs.com/qiunet/p/3296496.html
Copyright © 2020-2023  润新知