我的应用程序出现OutOfMemory异常。我已经把垃圾堆和垫子翻了个底朝天。在分析我的应用程序内存使用情况时,我发现以下疑点。我无法理解这些嫌疑人背后的主要原因。
请帮助我了解这种泄漏的怀疑和什么相关的解决方案。
“AJP-Bio-9002”-exec-5 at java.util.arrays.copyof([ci)[C(arrays.java:2882)at java.lang.abstractStringBuilder.expandCapacity(I)V(abstractStringBuilder.append(C)ljava/lang/abstractStringBuilder.append)ljava/lang/abstractStringBuilder.append)ljava/lang/abstractStringBuilder;(edhtmlparser.java:303)在org.apache.myfaces.renderkit.html.util.reducedhtmlparser.consumeattrvalue()ljava/lang/string;(reducedhtmlparser.java:327)在org.apache.myfaces.renderkit.html.util.reducedhtmlparser.parse()在org.apache.myfaces.renderkit.html.util.reducedhtmlparser.java:579)在org.apache.myfaces.renderkit.html.util.DefaultAddResource.Parseresponse(ljavax/servlet/http/HttpServletRequest;LJAva/lang/string;ljavax/servlet/http/httpservletresponse;)V(defaultaddresource.java:699)在org.apache.myfaces.webapp.filter.extensionsfilter.doFilter(ljavax/servlet/servletrequest;ljavax/servlet/servletresponse;ljavax/servlet/filterchain;)V(extensionsfilter.java:157)在org.apache.catalina.core.applicationfilter.java:157)在chain.doFilter(ljavax/servlet/servletrequest;ljavax/servlet/servletresponse;)V(applicationfilterchain.java:210)在org.apache.catalina.core.standardWrapperValve.invoke(lorg/apache/catalina/connector/request;lorg/apache/catalina/connector/request;lorg/apache/catalina/connector/response;)V(standardWrapperValve.java:240)在Lorg/apache/catalina/connector/request;lorg/apache/catalina/connector/response;)V(authenticatorbase.java:462)在org.apache.catalina.core.standardhostvalve.invoke(lorg/apache/catalina/connector/request;lorg/apache/catalina/connector/response;)V(standardhostvalve.java:164)在org.apache.catalina.invoke(/connector/request;lorg/apache/catalina/connector/response;)V(accesslogvalve.java:562)在org.apache.catalina.core.standardenginevalve.invoke(lorg/apache/catalina/connector/request;lorg/apache/catalina/connector/response;)V(standardenginevalve.java:118)在org.apache.catalina/connector/response;jvmrouteBindervalve.java Lorg/Apache/catalina/connector/request;lorg/apache/catalina/connector/response;)V(replicationvalve.java:333)在org.apache.catalina.connector.coyoteadapter.service(lorg/apache/coyote/request;lorg/apache/coyote/request;lorg/apache/coyote/response;)V(coyoteadapter.java:395)在org.apache.coyote.ajp.ajp.ajpprocessor.process(ajp.ajpProtocol$ajpConnectionHandler.process(lorg/apache/tomcat/util/net/socketwrapper;lorg/apache/tomcat/util/net/socketwrapper;lorg/apache/tomcat/util/net/socketstatus;)lorg/apache/tomcat/util/net/socketstatus;lorg/apache/tomcat/util/net/socketstatus;lorg/apache/tomcat/util/net/socketstatus;9)在org.apache.tomcat.util.net.jioEndpoint$socketprocessor.run()V(jioEndpoint.java:302)在java.util.concurrent.ThreadPoolExecutor$worker.runtask(ljava/lang/runnable;)V(threadpoolexecutor.java:886)在java.util.concurrent.threadpoolexecutor$worker.run()V(threadpoolexecutor.java:908)在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[]”的一个实例中。
您可以转到内存分析器(MAT)的“Dominator_Tree”选项卡并展开任务线程。这将显示任务线程中所有对象的保留堆。这可能有助于您找到应用程序中导致问题的部分(代码)。
关于这个设置,我有几个问题: > 我的应用程序(Spring/Hibernate)每个用户有一个不同的数据库。所以这里的问题是数据源(使用spring和hibernate来实现持久性)是在Tomcat级别创建的。因此,无论我做什么连接池都是在服务器级别。 根据集群配置,Tomcat实例将创建它们自己的连接池。
hibernate中的一级缓存维护在会话对象上,并且在同一JVM的边界内。它是hibernate使用的强制缓存。我担心的是如何在集群环境中管理it。多个节点将拥有自己的一级缓存(等于会话数)。在单个JVM中,一个实体可以是不同会话的一部分,但事务管理器、乐观锁定可以处理这种情况。。。。但是,我们将如何在集群环境中管理it 1)一个实体可以在两个不同节点的一级缓存中被修改,导致数据过时、数据丢失等问
我使用Spring调度程序,使用@调度注释来调度运行文件生成服务的作业。应用程序部署在集群环境中Tomcat的5个单独节点上,用于负载平衡和故障转移。正因为如此,服务被调度了5次,这是不可能的。有没有办法将调度程序配置为仅在当前节点上运行? 有一种方法使用数据库找出当前活动节点,并在这里调用该特定实例的调度器 另一种方法是使用石英调度器 由于我无法对部署的应用程序进行重大更改,是否有简单的解决方案
问题内容: 将Singleton对象重构到集群环境的最佳策略是什么? 我们使用Singleton从数据库中缓存一些自定义信息。它 主要是 只读的,但是在发生某些特定事件时会刷新。 现在,我们的应用程序需要部署在集群环境中。根据定义,每个JVM将具有自己的Singleton实例。因此,当在单个节点上发生刷新事件并且刷新其缓存时,JVM之间的缓存可能不同步。 保持缓存同步的最佳方法是什么? 谢谢。 编
目前Cloud-ML生态云只有武清集群。这个集群的基本配置如下: 武清集群 集群目前包括若干台CPU和GPU节点。 集群的Endpoint为:https://cnbj2.cloudml.api.xiaomi.com
问题内容: 由于Tomcat中的孤立线程,我遇到了内存泄漏。特别是,Guice和JDBC驱动程序似乎没有关闭线程。 我知道这与其他问题,但是就我而言,“不必担心”的答案是不够的,因为它给我带来了麻烦。我的CI服务器会定期更新此应用程序,重新加载6-10次后,由于Tomcat内存不足,CI服务器将挂起。 我需要能够清理这些孤立的线程,以便可以更可靠地运行CI服务器。任何帮助,将不胜感激! 问题答案: