java.lang.OutOfMemoryError:JSP页面上的java堆空间
我在一个spring框架应用程序上遇到内存不足错误。我禁用了一些过滤器(如安全过滤器)。但是现在错误出现在JSP页面上。我的JSP页面非常繁重,并且使用Tile框架 不幸的是,我的主机只提供32MB的堆空间,我无法增加这一空间 我在布局页面中添加了几行:java.lang.OutOfMemoryError:JSP页面上的java堆空间,java,jsp,servlets,Java,Jsp,Servlets,我在一个spring框架应用程序上遇到内存不足错误。我禁用了一些过滤器(如安全过滤器)。但是现在错误出现在JSP页面上。我的JSP页面非常繁重,并且使用Tile框架 不幸的是,我的主机只提供32MB的堆空间,我无法增加这一空间 我在布局页面中添加了几行: 最终长MB=1024L*1024L; //获取堆的当前大小(以字节为单位) long heapSize=Runtime.getRuntime().totalMemory(); println(“总内存(MB):”+(heapSize/MB));
最终长MB=1024L*1024L;
//获取堆的当前大小(以字节为单位)
long heapSize=Runtime.getRuntime().totalMemory();
println(“总内存(MB):”+(heapSize/MB));
//获取堆的最大大小(以字节为单位)。堆不能超过此大小。
//任何尝试都将导致OutOfMemoryException。
long heapMaxSize=Runtime.getRuntime().maxMemory();
println(“
堆最大大小(MB):”+(heapMaxSize/MB));
//获取堆内的可用内存量(字节)。这个尺寸会增加
//在垃圾收集之后,随着新对象的创建而减少。
long heapFreeSize=Runtime.getRuntime().freemory();
println(“
堆自由大小(MB):”+(heapFreeSize/MB));
以上在输出时打印以下输出(HTML页面)
总内存(MB):29
堆最大大小(MB):29
堆可用大小(MB):3
以下是堆栈跟踪:
javax.servlet.jsp.JspException:ServletException in'/jsp/fragments/account/newAccount.jsp':java.lang.OutOfMemoryError:java堆空间
位于org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:921)
位于org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:460)
位于org.apache.jsp.jsp.common.tiles.layout\u jsp.\u jspx\u meth\u tiles\u 005finsert\u 005f3(layout\u jsp.java:818)
位于org.apache.jsp.jsp.common.tiles.layout\u jsp.\u jsp服务(layout\u jsp.java:428)
位于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:393)
位于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)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
位于org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
位于org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
位于org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
位于org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
位于org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
位于org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
运行(Thread.java:662)
我只提供了32MB的堆空间,我无法增加这一空间
对不起,但故事到此结束。您有两种选择:
- 重写视图以提高内存效率。也许您需要退回到普通的JSP/Servlet,而不需要任何额外的框架,当然每个框架都需要自己的内存共享
- 给服务器更多内存。升级现有主机帐户或迁移到其他主机