tomcat OutOfMemory 解决办法

使用Java程序从数据库中查询大量的数据时出现异常: java.lang.OutOfMemoryError: Java heap space 。
 
在JVM中如果98%的时间是用于GC且可用的 Heap size(堆) 不足2%的时候将抛出此异常信息。 JVM堆内存空间在启动的时自动设置Heap size的值,初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。 

 

java.lang.OutOfMemoryError与java.lang.OutOfMemoryError: PermGen space的异常用过tomcat的人都遇到过(用户量大,应用使用频繁等),这个异常和JVM默认划分的内存上限是128M有关,如果你的业务足够繁忙,128M是远远不够的,你可以自行为JVM分配。

分配方法: 

(1)linux下,编辑tomcat的catalina.sh文件,在第一行的后面增加一句:

 JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M',-server表示以server模式运行,-Xms256m是最小内存,-Xmx512m是最大内存,可自己调整,PermSize/MaxPermSize最小/最大堆大小.一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置,我自己的文件如下: 

#!/bin/sh JAVA_OPTS='-server -Xms1024m -Xmx1024m XX:PermSize=128M -XX:MaxPermSize=256M' 

(2)windows下 ,编辑tomcat的catalina.bat文件,在第一行的后面增加一句:

 set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M 注意:没有单引号 

猜你喜欢

转载自lxlr123.iteye.com/blog/2178127