最近一个大项目,是由三十多个小项目组成,项目开发采用struts+hibernate3.1
项目前期,大概十个项目左右,tomcat运行良好
昨天加入十个左右项目时,tomcat报错:java.lang.OutOfMemoryError: PermGen space
在网上找到一些方法:
1.升级cglib(无效)
2.共用相同的JAR(无明显效果)
3.设置内存参数。(都设置到1G了,无明显效果)想知道各位有什么好的意见!
项目前期,大概十个项目左右,tomcat运行良好
昨天加入十个左右项目时,tomcat报错:java.lang.OutOfMemoryError: PermGen space
在网上找到一些方法:
1.升级cglib(无效)
2.共用相同的JAR(无明显效果)
3.设置内存参数。(都设置到1G了,无明显效果)想知道各位有什么好的意见!
解决方案 »
- myEclipse的错误,谁能帮忙解决下
- winform项目向javaEE项目中发送txt文件,高手请进
- servlet处理出错
- 这是个啥错?在网上搜没有哦~
- 类似百度查询结果 请教高手!!!!!
- 关于hibnate插件的问题!
- 关于XmlBeanFactory的一个简单问题...
- 100分求 hibernate+spring 多对多关系的例子!
- 外企招聘熟悉J2ME的Java程序员及有志于J2ME的人才、c/c++程序员!!
- 在springMVC配置中加入<mvc:resources location="/images/" mapping="/images/**"/>
- 请大家帮助一下我啊~~ 域用户验证相关~~
- apache tomcat 目录不同
加上这个参数看看
-XX:MaxPermSize=256m 还有,不要经常的deploy你的项目,因为每次deploy都会占用这个区域。参考这个文章看看
http://www.java2000.net/viewthread.jsp?tid=5691http://www.java2000.net/viewthread.jsp?tid=4944
改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
二、在tomcat中redeploy时出现outofmemory的错误.
可以有以下几个方面的原因:
1,使用了proxool,因为proxool内部包含了一个老版本的cglib.
2, log4j,最好不用,只用common-logging
3, 老版本的cglib,快点更新到最新版。
4,更新到最新的hibernate3.2三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
有问题多从自己程序入手,多看看java的DOC文档
并详细了解JVM的知识。这样开发的程序才会健壮。
hibernate我用的3.1版本,升到3.2会很麻烦
访问每个项目上的测试页面1(没有访问数据库),正常
访问每个项目上的测试页面2(访问数据库),前二十个左右项目正常,然后出现同样的异常
如是怀疑是连接池问题:
如是采用hibernate,proxool,c3p0数据连接池测试,无明显效果前十个项目运行了近半年,非常稳定
有好的建议请跟贴,万分感谢!
早上过来测试,把PermSize的值分别调到12-24与256-512效果一样。。
PermSize设置没启作用,如果是这样我也认了也许问题可以很快解决。
我用的tomcat版本是6.0
下个5.5的继续测试
将PermSize值设置为10-20项目报错
将PermSize值设置为128-256项目运行正常
可见在tomcat6下面设置的参数没起到做用,害得我瞎整了两天。。不过学到很多东西感谢各位的参与,此贴先不结,等项目到服务器上测试成功后结贴。
再次感谢!!!
采用5.5可以解决问题,如果你用5.5时还出现那种问题,那么你可能是把5.5安装成服务从服务启动的。你看一下从服务启动时是运行的哪一个文件,tomcat5.exe是不是?好象运行这个文件并不会加载对PermSize的配置,我从服务启动进行测试就会出问题。使用startup.bat启动,我把startup.bat设置成启动任务,随系统启动。测试是成功的。