首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tomcat中集群环境中的内存泄漏

tomcat中集群环境中的内存泄漏
EN

Stack Overflow用户
提问于 2013-10-18 10:03:24
回答 2查看 6.1K关注 0票数 4

我在我的应用程序中得到了OutOfMemory异常。我拿了垃圾堆,在垫子上进行了分析。在分析我的应用程序内存使用情况时,我发现了以下疑点。我不明白这些嫌疑犯背后的主要原因。

请帮助我理解这个泄漏嫌疑人和有什么相关的解决方案。

嫌疑犯1

线程org.apache.tomcat.util.threads.TaskThread @ 0x2bdf5ff8 "ajp-bio-9002"-exec-5保持局部变量的总大小为113,973,288 (50.72%)字节。

内存累积在"org.apache.catalina.loader.StandardClassLoader @0x293b4488加载的"org.apache.tomcat.util.threads.TaskThread“的一个实例中。

线程堆栈

"ajp-bio-9002"-exec-5 at java.util.Arrays.copyOf([CI)[C (Arrays.java:2882) at java.lang.AbstractStringBuilder.append(C)Ljava/lang/AbstractStringBuilder;(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(C)Ljava/lang/AbstractStringBuilder;(AbstractStringBuilder.java:572) at java.lang.StringBuffer.append(C)Ljava/lang/StringBuffer;(StringBuffer.java:320) at org.apache.myfaces.renderkit.html.util.ReducedHTMLParser.consumeString(C)Ljava/lang/String;)( org.apache.myfaces.renderkit.html.util.ReducedHTMLParser.consumeAttrValue()Ljava/lang/String;(ReducedHTMLParser.java:327) at org.apache.myfaces.renderkit.html.util.ReducedHTMLParser.parse()V (ReducedHTMLParser.java:579) at org.apache.myfaces.renderkit.html.util.ReducedHTMLParser.parse(Ljava/lang/CharSequence;Lorg/apache/myfaces/renderkit/html/util/CallbackListener;) (ReducedHTMLParser.java:303))V ( org.apache.myfaces.renderkit.html.util.DefaultAddResource.parseResponse(Ljavax/servlet/http/HttpServletRequest;Ljava/lang/String;Ljavax/servlet/http/HttpServletResponse;)V (DefaultAddResource.java:699) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V (ExtensionsFilter.java:157) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;))V ( org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;))V ( org.apache.catalina.authenticator.AuthenticatorBase.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;))V ( org.apache.catalina.valves.AccessLogValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AccessLogValve.java:562) at org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardEngineValve.java:118) at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;))V ( org.apache.catalina.ha.tcp.ReplicationValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (ReplicationValve.java:333) at org.apache.catalina.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V (CoyoteAdapter.java:395) at org.apache.coyote.ajp.AjpProcessor.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;)( org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;(AjpProcessor.java:301) )在org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;(AjpProtocol.java:183)( org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run()V (JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Ljava/lang/Runnable;)V (ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run()V (ThreadPoolExecutor.java:908) at java.lang.Thread.run()V (Thread.java:662) )

嫌疑犯2

"java.lang.StringBuffer“加载的一个实例占59 216 088字节(26.35%)。实例由org.apache.myfaces.renderkit.html.util.ReducedHTMLParser @ 0x276990e8引用,由"org.apache.catalina.loader.WebappClassLoader @ 0x29592038“加载。内存在"char[]“由"”加载的一个实例中累积。

EN

回答 2

Stack Overflow用户

发布于 2015-03-24 08:32:29

您可以转到内存分析器(MAT)的"dominator_tree“选项卡,并展开TaskThread。这将显示该任务线程中所有对象的保留堆。这可能帮助您到达导致问题的应用程序中的部分(代码)。

票数 2
EN

Stack Overflow用户

发布于 2013-10-18 10:46:12

看来org.apache.myfaces.renderkit.html.util.ReducedHTMLParser是罪魁祸首。ReducedHTMLParser的javadoc解释了它的工作原理。它在内存中缓冲整个HTML响应,然后进行处理。看起来,它试图--而且失败--处理一个非常大的反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19446896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档