Rav*_*mar 2 java out-of-memory
我是Java的新手,负责修复bug,问题如下.如果您提出建议/想法是什么问题以及如何解决这个问题,那将是非常好的:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:453)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
javax.servlet.ServletException
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.CustMaint.Jsp.ProfProfileDetails_jsp._jspService(ProfProfileDetails_jsp.java:4016)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
java.lang.OutOfMemoryError
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.17
Run Code Online (Sandbox Code Playgroud)
以下是Tomcat人员所说的话:
内存不足可能由多种原因引发:
试图将几GBytes文件加载到内存中的servlet肯定会杀死服务器.这些错误必须被视为我们程序中的一个简单错误.
为了补偿servlet尝试加载的数据,可以增加堆大小,以便没有空间为需要创建的线程创建堆栈大小.每个线程所需的内存因操作系统而异,但默认情况下可能高达2M,而某些操作系统(如Debian Sarge)则无法通过
-Xss参数进行缩减.1经验法则,在32位Web应用程序中使用不超过1G的堆空间.深度递归算法也可能导致Out Of Memory问题.在这种情况下,唯一的修复是增加线程堆栈大小(
-Xss),或重构算法以减少深度,或每次调用的本地数据大小.使用大量具有许多依赖关系的库的Web应用程序,或维护大量Web应用程序的服务器可能会耗尽JVM PermGen空间.此空间是VM存储类和方法数据的位置.在这些情况下,修复是增加此大小.Sun VM具有
-XX:MaxPermSize允许设置其大小的标志 (默认值为64M)对类的硬引用可以防止垃圾收集器在
ClassLoader丢弃时回收为它们分配的内存 .这将在JSP重新编译时发生,并且webapps会重新加载.如果这些操作在具有这些类型问题的webapp中很常见,那么在PermGen空间变满并且抛出Out Of Memory之前,这将是一个时间问题.