我在做java项目时,用Tomcat5.5.27版本时,由于项目比较大,页面数据比较多,在程序运行时出现javax.servlet.ServletException: Java heap space异常,大概抛出的异常如下:
     java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor386.invoke(Unknown Source)
Caused by: java.lang.OutOfMemoryError: Java heap space
2009-03-26 11:26:39 [org.apache.struts.chain.commands.AbstractExceptionHandler]-[WARN] Unhandled exception
javax.servlet.ServletException: Java heap space
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:298)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
2009-03-26 11:26:39 [org.apache.struts.chain.commands.ExceptionCatcher]-[WARN] Exception from exceptionCommand 'servlet-exception'
而且在项目被很多用户访问时,速度很慢,有时会出现空白页面,会报上面的异常,我也在网上查了一些资料,说是java堆栈已满吧,但是怎样在Tomcat5.5.27版本上面设置才能解决问题呢?怎样设置才能提高项目的运行速度呀?请教各位高手指点迷津啊!
如何在Tomcat5.5.27版本上面设置解决上面的异常以及解决速度慢的问题?而且还有那些地方会影响到web项目的运行速度呀?请各位高手多多指点?

解决方案 »

  1.   

    说明你Tomcat的虚拟机内存有点小,可以调大一些,是有这个内存的主要是class文件。注意你的项目。在catalina.sh或者catalina.bat中找到如下第一行和第三行行,然后把第二行加上去应该可以解决问题。至于具体数字是我机器的,你可做相应调整。
      echo "Using CATALINA_BASE:   $CATALINA_BASE"
      export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
      echo "Using CATALINA_HOME:   $CATALINA_HOME"
      

  2.   

    加强class文件、jar包的重用。比如考虑把经常用的jar从项目的lib转移到tomcat的lib,这样可以共用。
      

  3.   

    最新的web server软件UFO(在www.gm365.com上发布的),能很好的支持静态网页和动态网页交互问题,在网站访问速度上能明显的提高,其发布网站用的就是UFO,速度很快。