才子佳人博客

我的故事我讲述

java.lang.OutOfMemoryError: Java heap space异常解决办法
 
来源:xjh  编辑:xjh  2007-09-06

今天首次遇到TOMCAT异常-java.lang.OutOfMemoryError:Javaheapspace,经查阅资料,是如下原因:

使用Java程序从数据库中查询大量的数据时出现:java.lang.OutOfMemoryError:Javaheapspace在JVM中如果98%的时间是用于GC且可用的Heapsize不足2%的时候将抛出此异常信息。

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heapsize的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。

例如:java-jar-Xmn16m-Xms64m-Xmx128mMyApp.jar如果HeapSize设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC占用了更多的时间,而应用分配到的执行时间较少。HeapSize最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。Heapsize的-Xms-Xmn设置不要超出物理内存的大小。否则会提示“Erroroccurredduring。

环境:redhat9.0tomcat6.0

tomcat异常:

rootcause

javax.servlet.ServletException:java.lang.OutOfMemoryError:Javaheapspace
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
 org.apache.jsp.index_jsp._jspService(index_jsp.java:400)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

解决办法:

重启TOMCAT,设置合理的最小最大内存,异常排除。

参考资料:
http://www.blogjava.net/etlan/archive/2007/04/29/114575.html
http://tag.csdn.net/Article/8b3a778b-89e6-4790-9c19-7a90f988472e.html


分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: