服务器
内存溢出,经处理未果,希望得到朋友们的帮助。
错误提示:
java.lang.OutOfMemoryError: PermGen space服务器配置如下:
系统:Microsoft Windows Server 2003 R2 Standard Edition Service Pack 1
内存:4.00GB
Web应用服务器:apache-tomcat-6.0.35
JDK:jdk1.6
经过以下处理还是没有处理好:
1.释放掉一部分内存,可以运行一段时间(10分钟之内),但是又出现错误:
java.lang.OutOfMemoryError: PermGen space
2.更换tomcat,结果一样出错。
希望能得到大家的帮助,谢谢!
------解决方案--------------------或者是SQL语句,select * 甚至select distinct * 这种,都会造成某些模块大量占用系统内存
------解决方案--------------------
Class在被Loader时会被放到PermGen space,和堆溢出还有点区别,网上有很多这样的帖,前几天在论坛里还有人问过。
http://blog.csdn.net/fengyie007/article/details/1780375
------解决方案--------------------楼主你没代码别人不好给你解决啊。
凭个人经验,内存溢出原因有一下几点:
1、程序递归或者是个死循环,没有结束点;
2、程序使用超大的对象数组,而且长时间占据内存没有及时释放;
3、文件读写没有进行close流,导致内存吃紧。
个人博客:http://www.happyalaric.com
着手从上面三方面检查程序,希望对你有帮助
------解决方案--------------------
楼主搞错方向了吧?
PermGen space这个是SUN的JVM的特色。全称是Permanent Generation space,是指内存的永久保存区域。
这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理。
总的来说,三种情况容易导致永久区溢出:
1、确实你的jar包太多了,存不下;
2、你经常使用热部署,重复多次就存不下了;
3、你用了动态JSP技术,经常动态生成JSP页面,每个JSP就是一个Class。
JVM参数的话是: -XX:PermSize=256m -XX:MaxPermSize=256m
------解决方案--------------------PermGen space,永久存储区。因为永久存储区满了。这个很常见,一般在热发布的环境中出现,大多数原因是每次发布应用系统都不重启,久而久之永久存储区中的死对象太多,导致新对象无法申请新内存。
解决办法:重启应用程序
------解决方案--------------------你部了几个系统啊?删除多余的系统,要是服务器里部了多个系统,而且有很多jar包就经常会出现内存溢出的问题
------解决方案--------------------先在dos命令里用jconsole查看一下内存使用的情况,
可以在加大tomcat的-Xms -Xmx参数,因为tomcat的默认内存只用128M,很容易就爆掉了,可能是你查询的数据比较大吧
------解决方案--------------------是程序访问的时候才报异常,还是不访问就报异常?
能够根据异常提示进行追踪?
能否部署到WAS或者其他Web服务器中试试?
先确定是环境本身(包括tomcat、jar包等)的问题,还是应用程序中存在的问题吧
------解决方案--------------------
和我遇到的问题一样,我就是这样解决的,希望能够帮助到你!
java.lang.OutOfMemoryError: Java heap space 解决方法
这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.
设置的方法主要是以下几个:.
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
------------------------------
如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m