Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.OutOfMemoryError:JSP页面上的java堆空间_Java_Jsp_Servlets - Fatal编程技术网

java.lang.OutOfMemoryError:JSP页面上的java堆空间

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));

我在一个spring框架应用程序上遇到内存不足错误。我禁用了一些过滤器(如安全过滤器)。但是现在错误出现在JSP页面上。我的JSP页面非常繁重,并且使用Tile框架

不幸的是,我的主机只提供32MB的堆空间,我无法增加这一空间

我在布局页面中添加了几行:

最终长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,而不需要任何额外的框架,当然每个框架都需要自己的内存共享

  • 给服务器更多内存。升级现有主机帐户或迁移到其他主机


分析应用程序可能是一个选项,它可以让您了解到底是什么导致OutOfMemory错误,以及是否真的可以在不增加物理内存的情况下优化代码

你的问题是什么?我想我们需要一些代码来帮助您。我的问题是,我想通过使用一些JSP的最佳实践来减少内存空间或诸如此类的东西,从而消除即使在32MB空间上的堆外错误。