java.lang.OutOfMemoryError: Java heap space异常
最进做了一个网站,关于旅游方面的,但在做的过程中,遇到了一些问题,其中以个比较典型的,让我们头比较疼的错误,就是在程序发布到服务器上去之后,才几个人访问,内存就居高不下了,每刷新首页内存会上升10M,而且上去就不会掉下来,就是只升不降,最后报java.lang.OutOfMemoryError: Java heap space异常,只得从启服务器。这个问题很严重啊,程序才刚出来就像这样,要是以后访问的人多了,那还得了。这个异常是因为java虚拟机的内存占用了98%之后,就会出现,就是虚拟机的内存不够用了,开始还以为是以为是我们的服务器内存不够,后面升到了4G,但还是这样.在网上看了,很多人也遇见过,说可能是JAVA的堆栈设置太小的原因,这样的话,大致就是将堆栈设置大一点:如果你用win
/tomcat/bin/catalina.bat 加上下面的命令:
set JAVA_OPTS=-Xms32m -Xmx256m
如果你用unix/linux
/tomcat/bin/catalina.sh 加上下面的命令:
JAVA_OPTS="-Xms32m -Xmx256m"
按网上的设置了,运行,还是那样,动不动就死机。后面又问了老师,老师说可能是连接的session没有关闭,或者是逻辑错误,经过检查,session关闭了的,也没有什么逻辑错误。这可了我们了,问题解决不了,没有办法。都有点怀疑我们用的ssh框架的问题,但考虑过后,现在全世界那么多人都在用,别人用不会出现,应该不会是框架的问题。又将视线转移到程序上面,有面到群里面去请教的高手,他们说是我们程序的问题,要我们仔细检查下程序。但还是检查不出来,问题解决不了,程序有不能这样用,所以开始考虑从新做过,用以前熟练的servlet+JDBC来做,要是这样的话,可能会耽搁一些时间,所以还是用最后的时间来检查程序,希望能检查出来,最后,终于检查出来咯,原来我Action的是后掉用业务层的方法的时候,我们用的是在没个Action中去读取配置文件,没有用依赖注入,后面讲程序改成了用依赖注入的方式来使用,内存重开始的每刷新一下内存上升10M降低到了几百K,并且可以看到内存上升后会下降,问题终于解决了,啊,好高兴啊!!!! 1 楼 haidii 2009-05-19 呵呵!
我也替你高兴!