最近做个ssh的老是提示java.lang.OutOfMemoryError: PermGen space

jan222 2009-01-02 12:52:08
有时重开下tomcat又没问题,不知怎么回事

javax.servlet.ServletException: Filter execution threw an exception
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)


root cause

java.lang.OutOfMemoryError: PermGen space
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:620)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1876)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:889)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1353)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:216)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:202)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:146)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

...全文
669 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
miaoliujun 2009-01-02
  • 打赏
  • 举报
回复
这个问题很正常,在解决这个问题之前,需要了解下JVM中的内存是怎么分配的,有哪几部分。

楼主你用google查找一下应该也能找到解决方案,我这里找到一个解释,你可以参考下

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错误。

解决方法是你在启动的时候增加-XX:MaxPermSize这样一个参数,比如-XX:MaxPermSize=256m,这个是将PermGen space最大设置为256M,这个值设置不宜过大,因为你这里设置大了,程序中使用的就会相应的减少。
老紫竹 2009-01-02
  • 打赏
  • 举报
回复
java.lang.OutOfMemoryError: PermGen space
你不断的更新你的class,造成应用重启,最终造成代码区的内存空间满了。
重开一下,当然就好了。呵呵!
我这里也这样,你可以参考这个看看
http://www.java2000.net/p5691
增加代码区,不过只要你不断的更新,迟早会出现这个问题。
jinhuiyu 2009-01-02
  • 打赏
  • 举报
回复
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息,可以用如下方法解决(根据你的实际情况设置大小),但是这只是临时的解决方法,更重要的是改造你的CODE

1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m

2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:
set JAVA_OPTS=-Xms64m -Xmx256m
位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适.

3.如果是linux系统
Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms64 -Xmx512'
jan222 2009-01-02
  • 打赏
  • 举报
回复
谢谢各位大侠,我试下
guolimin1118 2009-01-02
  • 打赏
  • 举报
回复
我也遇到过这个问题
很烦人的
帮顶
大家回想我们开发的时候搭建项目工程的时候,配置pom,各种拷贝。每次都这样是不是很麻烦。那么我们能不能整理一个基础项目基础模板出来,就这样adminstore诞生了。adminstore整合了spring,hibernate,shiro,discover等框架。不用担心每次那样麻烦的拷贝了。后台管理系统集成模板修改,菜单管理,用户管理,角色管理,友情链接,插件管理管理等功能。站在巨人的肩膀上,让我们看得更远! 环境要求 JDK6或更高版本(支持JDK7、JDK8)。建议使用JDK8,有更好的内存管理。更低版本的JDK6、JDK7可能需要设置Java内存-XX:PermSize=128M -XX:MaxPermSize=512M,否则可能出现这种类型的内存溢出:java.lang.OutOfMemoryError: PermGen space。 Servlet2.5或更高版本(如Tomcat6或更高版本)。 MySQL5.0或更高版本 Maven3.0或更高版本。 技术选型: SSH (Spring、SpringMVC、Hibernate) 安全权限 Shiro 缓存 Ehcache 视图模板 freemarker discover AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL,字符集选择为utf8或者utf8mb4(支持更多特殊字符,推荐)。 执行数据库脚本。数据库脚本在database目录下。 在eclipse中导入maven项目。点击eclipse菜单File-Import,选择Maven-Existing Maven Projects。创建好maven项目后,会开始从maven服务器下载第三方jar包(如spring等),需要一定时间,请耐心等待。 创建mysql数据库,导入adminstore.sql 修改数据库连接。打开/web/src/main/resources/jdbc.propertis文件,根据实际情况修改jdbc.url、jdbc.username、jdbc.password的值。 运行程序。在eclipse中,右键点击项目名,选择Run as-Maven build...,Goals填入jetty:run或tomcat7:run,然后点击Run。 访问系统。前台地址:http://localhost:8080/web,手机站地址:http://127.0.0.1:8080/;后台地址:http://localhost:8080/web/login.htm,用户名:admin,密码:123456。 本篇文章来源于源码库(www.aspku.com),转载请注明出处 原文链接:http://www.aspku.com/qita/javacode/298655.html

67,543

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧