内存不足错误 Java堆内存空间

4
我们的生产环境使用的是Tomcat 5.5和JDK6。上周我们将系统升级到了Tomcat 7和JDK7。自那时起,我们每天都会出现OutOfMemoryError错误。
我添加了一些标志来捕获OOM时的堆转储信息,并使用内存分析器工具进行了分析。倒掉中显示了一个可疑对象com.sun.org.apache.xml.internal.resolver.Catalog,其浅大小约为56B,保留大小约为1.3 GB,并伴随以下堆栈跟踪。
http-apr-8080-exec-36
  at java.util.zip.ZipCoder.getBytes(Ljava/lang/String;)[B (Unknown Source)
  at java.util.zip.ZipFile.getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; (Unknown Source)
  at java.util.jar.JarFile.getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; (Unknown Source)
  at java.util.jar.JarFile.getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry; (Unknown Source)
  at sun.misc.URLClassPath$JarLoader.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; (Unknown Source)
  at sun.misc.URLClassPath$JarLoader.findResource(Ljava/lang/String;Z)Ljava/net/URL; (Unknown Source)
  at sun.misc.URLClassPath$1.next()Z (Unknown Source)
  at sun.misc.URLClassPath$1.hasMoreElements()Z (Unknown Source)
  at java.net.URLClassLoader$3$1.run()Ljava/net/URL; (Unknown Source)
  at java.net.URLClassLoader$3$1.run()Ljava/lang/Object; (Unknown Source)
  at java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (Native Method)
  at java.net.URLClassLoader$3.next()Z (Unknown Source)
  at java.net.URLClassLoader$3.hasMoreElements()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.next()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.hasMoreElements()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.next()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.hasMoreElements()Z (Unknown Source)
  at com.sun.xml.ws.policy.privateutil.ServiceFinder$LazyIterator.hasNext()Z (ServiceFinder.java:362)
  at com.sun.xml.ws.policy.privateutil.ServiceFinder.toArray()[Ljava/lang/Object; (ServiceFinder.java:228)
  at com.sun.xml.ws.policy.privateutil.PolicyUtils$ServiceProvider.load(Ljava/lang/Class;)[Ljava/lang/Object; (PolicyUtils.java:451)
  at com.sun.xml.ws.policy.AssertionValidationProcessor.<init>(Ljava/util/Collection;)V (AssertionValidationProcessor.java:80)
  at com.sun.xml.ws.api.policy.ValidationProcessor.<init>()V (ValidationProcessor.java:69)
  at com.sun.xml.ws.api.policy.ValidationProcessor.getInstance()Lcom/sun/xml/ws/api/policy/ValidationProcessor; (ValidationProcessor.java:79)
  at com.sun.xml.ws.api.policy.AlternativeSelector.doSelection(Lcom/sun/xml/ws/policy/EffectivePolicyModifier;)V (AlternativeSelector.java:50)
  at com.sun.xml.ws.policy.WsitPolicyUtil.doAlternativeSelection(Lcom/sun/xml/ws/policy/PolicyMap;)Lcom/sun/xml/ws/policy/PolicyMap; (WsitPolicyUtil.java:96)
  at com.sun.xml.ws.policy.jaxws.WsitPolicyResolver.resolve(Lcom/sun/xml/ws/api/policy/PolicyResolver$ClientContext;)Lcom/sun/xml/ws/policy/PolicyMap; (WsitPolicyResolver.java:121)
  at com.sun.xml.ws.policy.PolicyWSDLParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (PolicyWSDLParserExtension.java:953)
  at com.sun.xml.ws.wsdl.parser.DelegatingParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (DelegatingParserExtension.java:187)
  at com.sun.xml.ws.wsdl.parser.WSDLParserExtensionFacade.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (WSDLParserExtensionFacade.java:334)
  at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(Ljava/net/URL;Ljavax/xml/transform/Source;Lorg/xml/sax/EntityResolver;ZLcom/sun/xml/ws/api/server/Container;Lcom/sun/xml/ws/api/policy/PolicyResolver;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (RuntimeWSDLParser.java:171)
  at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(Ljava/net/URL;Ljavax/xml/transform/Source;Lorg/xml/sax/EntityResolver;ZLcom/sun/xml/ws/api/server/Container;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (RuntimeWSDLParser.java:131)
  at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(Ljava/net/URL;Ljavax/xml/transform/Source;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (WSServiceDelegate.java:267)
  at com.sun.xml.ws.client.WSServiceDelegate.<init>(Ljavax/xml/transform/Source;Ljavax/xml/namespace/QName;Ljava/lang/Class;)V (WSServiceDelegate.java:230)
  at com.sun.xml.ws.client.WSServiceDelegate.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)V (WSServiceDelegate.java:178)
  at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)Ljavax/xml/ws/spi/ServiceDelegate; (ProviderImpl.java:106)
  at javax.xml.ws.Service.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;)V (Service.java:92)
  at org.tempuri.Trans.<init>()V (Trans.java:42)
  at mposclient.MPOSClient.RetailerTransaction(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; (MPOSClient.java:21)
  at WebService.IMTOPUP.topupAmount(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; (IMTOPUP.java:170)
  at sun.reflect.GeneratedMethodAccessor64.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(Lcom/sun/xml/ws/api/message/Packet;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (InstanceResolver.java:246)
  at com.sun.xml.ws.server.InvokerTube$2.invoke(Lcom/sun/xml/ws/api/message/Packet;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (InvokerTube.java:146)
  at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/message/Packet; (EndpointMethodHandler.java:257)
  at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/pipe/NextAction; (SEIInvokerTube.java:95)
  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:629)
  at com.sun.xml.ws.api.pipe.Fiber._doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:588)
  at com.sun.xml.ws.api.pipe.Fiber.doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:573)
  at com.sun.xml.ws.api.pipe.Fiber.runSync(Lcom/sun/xml/ws/api/pipe/Tube;Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/message/Packet; (Fiber.java:470)
  at com.sun.xml.ws.server.WSEndpointImpl$2.process(Lcom/sun/xml/ws/api/message/Packet;Lcom/sun/xml/ws/api/server/WebServiceContextDelegate;Lcom/sun/xml/ws/api/server/TransportBackChannel;)Lcom/sun/xml/ws/api/message/Packet; (WSEndpointImpl.java:295)
  at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(Lcom/sun/xml/ws/transport/http/WSHTTPConnection;)V (HttpAdapter.java:515)
  at com.sun.xml.ws.transport.http.HttpAdapter.handle(Lcom/sun/xml/ws/transport/http/WSHTTPConnection;)V (HttpAdapter.java:285)
  at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (ServletAdapter.java:143)
  at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;)V (WSServletDelegate.java:155)
  at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;)V (WSServletDelegate.java:189)
  at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (WSServlet.java:76)
  at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (HttpServlet.java:647)
  at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (HttpServlet.java:728)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (ApplicationFilterChain.java:305)
  at 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:222)
  at org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardContextValve.java:123)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AuthenticatorBase.java:472)
  at org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardHostValve.java:171)
  at org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (ErrorReportValve.java:99)
  at org.apache.catalina.valves.AccessLogValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AccessLogValve.java:936)
  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.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V (CoyoteAdapter.java:407)
  at org.apache.coyote.http11.AbstractHttp11Processor.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState; (AbstractHttp11Processor.java:1004)
  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState; (AbstractProtocol.java:589)
  at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run()V (AprEndpoint.java:1852)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run()V (Unknown Source)
  at java.lang.Thread.run()V (Unknown Source)

另一个具有类似堆栈跟踪的示例

http-apr-8082-exec-58
  at java.util.Arrays.copyOf([BI)[B (Unknown Source)
  at java.util.zip.ZipCoder.getBytes(Ljava/lang/String;)[B (Unknown Source)
  at java.util.zip.ZipFile.getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; (Unknown Source)
  at java.util.jar.JarFile.getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; (Unknown Source)
  at java.util.jar.JarFile.getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry; (Unknown Source)
  at sun.misc.URLClassPath$JarLoader.getResource(Ljava/lang/String;Z)Lsun/misc/Resource; (Unknown Source)
  at sun.misc.URLClassPath$JarLoader.findResource(Ljava/lang/String;Z)Ljava/net/URL; (Unknown Source)
  at sun.misc.URLClassPath$1.next()Z (Unknown Source)
  at sun.misc.URLClassPath$1.hasMoreElements()Z (Unknown Source)
  at java.net.URLClassLoader$3$1.run()Ljava/net/URL; (Unknown Source)
  at java.net.URLClassLoader$3$1.run()Ljava/lang/Object; (Unknown Source)
  at java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (Native Method)
  at java.net.URLClassLoader$3.next()Z (Unknown Source)
  at java.net.URLClassLoader$3.hasMoreElements()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.next()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.hasMoreElements()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.next()Z (Unknown Source)
  at sun.misc.CompoundEnumeration.hasMoreElements()Z (Unknown Source)
  at com.sun.xml.ws.policy.privateutil.ServiceFinder$LazyIterator.hasNext()Z (ServiceFinder.java:362)
  at com.sun.xml.ws.policy.privateutil.ServiceFinder.toArray()[Ljava/lang/Object; (ServiceFinder.java:228)
  at com.sun.xml.ws.policy.privateutil.PolicyUtils$ServiceProvider.load(Ljava/lang/Class;)[Ljava/lang/Object; (PolicyUtils.java:451)
  at com.sun.xml.ws.policy.AssertionValidationProcessor.<init>(Ljava/util/Collection;)V (AssertionValidationProcessor.java:80)
  at com.sun.xml.ws.api.policy.ValidationProcessor.<init>()V (ValidationProcessor.java:69)
  at com.sun.xml.ws.api.policy.ValidationProcessor.getInstance()Lcom/sun/xml/ws/api/policy/ValidationProcessor; (ValidationProcessor.java:79)
  at com.sun.xml.ws.api.policy.AlternativeSelector.doSelection(Lcom/sun/xml/ws/policy/EffectivePolicyModifier;)V (AlternativeSelector.java:50)
  at com.sun.xml.ws.policy.DefaultPolicyResolver.doAlternativeSelection(Lcom/sun/xml/ws/policy/PolicyMap;)Lcom/sun/xml/ws/policy/PolicyMap; (DefaultPolicyResolver.java:110)
  at com.sun.xml.ws.policy.DefaultPolicyResolver.resolve(Lcom/sun/xml/ws/api/policy/PolicyResolver$ClientContext;)Lcom/sun/xml/ws/policy/PolicyMap; (DefaultPolicyResolver.java:66)
  at com.sun.xml.ws.policy.PolicyWSDLParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (PolicyWSDLParserExtension.java:953)
  at com.sun.xml.ws.wsdl.parser.DelegatingParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (DelegatingParserExtension.java:187)
  at com.sun.xml.ws.wsdl.parser.WSDLParserExtensionFacade.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (WSDLParserExtensionFacade.java:334)
  at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(Lcom/sun/xml/ws/api/wsdl/parser/XMLEntityResolver$Parser;Lcom/sun/xml/ws/api/wsdl/parser/XMLEntityResolver;ZLcom/sun/xml/ws/api/server/Container;Lcom/sun/xml/ws/api/policy/PolicyResolver;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (RuntimeWSDLParser.java:252)
  at com.sun.xml.ws.api.model.wsdl.WSDLModel$WSDLParser.parse(Lcom/sun/xml/ws/api/wsdl/parser/XMLEntityResolver$Parser;Lcom/sun/xml/ws/api/wsdl/parser/XMLEntityResolver;ZLcom/sun/xml/ws/api/server/Container;Lcom/sun/xml/ws/api/policy/PolicyResolver;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/api/model/wsdl/WSDLModel; (WSDLModel.java:183)
  at com.sun.xml.ws.policy.jaxws.PolicyResourceLoader.getWsdlModel(Ljava/net/URL;Z)Lcom/sun/xml/ws/api/model/wsdl/WSDLModel; (PolicyResourceLoader.java:81)
  at com.sun.xml.ws.policy.jaxws.PolicyConfigParser.parseModel(Ljava/net/URL;Z[Lcom/sun/xml/ws/policy/PolicyMapMutator;)Lcom/sun/xml/ws/api/model/wsdl/WSDLModel; (PolicyConfigParser.java:223)
  at com.sun.xml.ws.policy.jaxws.PolicyConfigParser.parseModel(Ljava/lang/String;Lcom/sun/xml/ws/api/server/Container;[Lcom/sun/xml/ws/policy/PolicyMapMutator;)Lcom/sun/xml/ws/api/model/wsdl/WSDLModel; (PolicyConfigParser.java:185)
  at com.sun.xml.ws.policy.jaxws.PolicyConfigParser.parse(Ljava/lang/String;Lcom/sun/xml/ws/api/server/Container;[Lcom/sun/xml/ws/policy/PolicyMapMutator;)Lcom/sun/xml/ws/policy/PolicyMap; (PolicyConfigParser.java:103)
  at com.sun.xml.ws.policy.jaxws.WsitPolicyResolver.resolve(Lcom/sun/xml/ws/api/policy/PolicyResolver$ClientContext;)Lcom/sun/xml/ws/policy/PolicyMap; (WsitPolicyResolver.java:106)
  at com.sun.xml.ws.policy.PolicyWSDLParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (PolicyWSDLParserExtension.java:953)
  at com.sun.xml.ws.wsdl.parser.DelegatingParserExtension.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (DelegatingParserExtension.java:187)
  at com.sun.xml.ws.wsdl.parser.WSDLParserExtensionFacade.postFinished(Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtensionContext;)V (WSDLParserExtensionFacade.java:334)
  at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(Ljava/net/URL;Ljavax/xml/transform/Source;Lorg/xml/sax/EntityResolver;ZLcom/sun/xml/ws/api/server/Container;Lcom/sun/xml/ws/api/policy/PolicyResolver;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (RuntimeWSDLParser.java:171)
  at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(Ljava/net/URL;Ljavax/xml/transform/Source;Lorg/xml/sax/EntityResolver;ZLcom/sun/xml/ws/api/server/Container;[Lcom/sun/xml/ws/api/wsdl/parser/WSDLParserExtension;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (RuntimeWSDLParser.java:131)
  at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(Ljava/net/URL;Ljavax/xml/transform/Source;)Lcom/sun/xml/ws/model/wsdl/WSDLModelImpl; (WSServiceDelegate.java:267)
  at com.sun.xml.ws.client.WSServiceDelegate.<init>(Ljavax/xml/transform/Source;Ljavax/xml/namespace/QName;Ljava/lang/Class;)V (WSServiceDelegate.java:230)
  at com.sun.xml.ws.client.WSServiceDelegate.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)V (WSServiceDelegate.java:178)
  at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(Ljava/net/URL;Ljavax/xml/namespace/QName;Ljava/lang/Class;)Ljavax/xml/ws/spi/ServiceDelegate; (ProviderImpl.java:106)
  at javax.xml.ws.Service.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;)V (Service.java:92)
  at com.eservglobal.soaptopupsuite.Soaptopupsuite.<init>()V (Soaptopupsuite.java:42)
  at telenor.vas.voms.PrepaidRecharge.AnyTopup(Ltelenor/vas/voms/VoMSCommon;Lcom/eservglobal/soaptopupsuite/Session;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; (PrepaidRecharge.java:106)
  at telenor.vas.voms.PrepaidRecharge.PrepaidRecharge(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; (PrepaidRecharge.java:35)
  at telenor.vas.topup.TopUpWS.TopUp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ltelenor/vas/topup/PaymentResponse; (TopUpWS.java:468)
  at sun.reflect.GeneratedMethodAccessor69.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source)
  at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(Lcom/sun/xml/ws/api/message/Packet;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (InstanceResolver.java:246)
  at com.sun.xml.ws.server.InvokerTube$2.invoke(Lcom/sun/xml/ws/api/message/Packet;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (InvokerTube.java:146)
  at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/message/Packet; (EndpointMethodHandler.java:257)
  at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/pipe/NextAction; (SEIInvokerTube.java:95)
  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:629)
  at com.sun.xml.ws.api.pipe.Fiber._doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:588)
  at com.sun.xml.ws.api.pipe.Fiber.doRun(Lcom/sun/xml/ws/api/pipe/Tube;)Lcom/sun/xml/ws/api/pipe/Tube; (Fiber.java:573)
  at com.sun.xml.ws.api.pipe.Fiber.runSync(Lcom/sun/xml/ws/api/pipe/Tube;Lcom/sun/xml/ws/api/message/Packet;)Lcom/sun/xml/ws/api/message/Packet; (Fiber.java:470)
  at com.sun.xml.ws.server.WSEndpointImpl$2.process(Lcom/sun/xml/ws/api/message/Packet;Lcom/sun/xml/ws/api/server/WebServiceContextDelegate;Lcom/sun/xml/ws/api/server/TransportBackChannel;)Lcom/sun/xml/ws/api/message/Packet; (WSEndpointImpl.java:295)
  at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(Lcom/sun/xml/ws/transport/http/WSHTTPConnection;)V (HttpAdapter.java:515)
  at com.sun.xml.ws.transport.http.HttpAdapter.handle(Lcom/sun/xml/ws/transport/http/WSHTTPConnection;)V (HttpAdapter.java:285)
  at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (ServletAdapter.java:143)
  at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;)V (WSServletDelegate.java:155)
  at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;)V (WSServletDelegate.java:189)
  at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (WSServlet.java:76)
  at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (HttpServlet.java:647)
  at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (HttpServlet.java:728)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (ApplicationFilterChain.java:305)
  at 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:222)
  at org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardContextValve.java:123)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AuthenticatorBase.java:472)
  at org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (StandardHostValve.java:171)
  at org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (ErrorReportValve.java:99)
  at org.apache.catalina.valves.AccessLogValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V (AccessLogValve.java:936)
  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.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V (CoyoteAdapter.java:407)
  at org.apache.coyote.http11.AbstractHttp11Processor.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState; (AbstractHttp11Processor.java:1004)
  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState; (AbstractProtocol.java:589)
  at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run()V (AprEndpoint.java:1852)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run()V (Unknown Source)
  at java.lang.Thread.run()V (Unknown Source)

我猜测这个问题是由于我调用了另一个Web服务引起的。

我正在使用以下JVM选项,最小内存设置为500m,最大内存设置为1500m。

-XX:MaxPermSize=170m
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=C:\heaplogs\

为什么不直接升级到新版的Tomcat呢? - Pavel Horal
你允许了多少堆空间?我怀疑Java 7可能需要更多一点(可能是几百兆字节),但如果超过这个数,我会感到惊讶。顺便说一下,我建议确保你安装了Java 7更新版本25至40。 - Peter Lawrey
堆空间为1500 MB。Tomcat 7.27已经存在。我必须有一些理由在生产环境中升级它。 - orak
我误读了问题(以为你仍在使用Tomcat 5.5)。然后我会尝试升级/降级JAX-WS依赖项并查看发生了什么(https://www.java.net//forum/topic/glassfish/metro-and-jaxb/memory-leaks-consuming-web-services)。 - Pavel Horal
5个回答

2
这听起来非常类似于这个bug。如果是同样的问题,CatalogManager将持有对每个创建的CatalogEntry实例的引用。该链接建议您可以重复使用相同的服务对象,但每次调用都必须重新初始化它,以强制CatalogManger放弃其存储的引用。
该线程中的另一篇文章建议尝试以下方法以强制CatalogManger放弃引用。
-Dxml.catalog.staticCatalog=false

如果上述方法行不通,个人建议使用Axis2来消费SOAP服务。


0

我唯一能想到的明显问题就是你有一个内存泄漏。

你可以使用 jvisualvm 来检测在 Web Service 调用后仍然持有对 com.sun.org.apache.xml.internal.resolver.Catalog 对象引用的 GC 根。这是一个非常好的免费工具。

你可以通过谷歌搜索找到关于如何使用 jvisualvm 的指南。


0

从tomcat/bin打开catalina.sh。

然后

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

=> 重新启动您的tomcat


0

你绝对应该要求MAT显示给你谁在持有这些引用,为什么它们仍然存活而不被垃圾回收。

另一个选择是尝试专门的内存泄漏检测工具,比如 Plumbr


-2
无论何时您遇到OOM,都意味着某些功能会导致内存泄漏。查找内存泄漏可能很困难,但由于您已经缩小了嫌疑对象,请检查一下WebService客户端中是否有任何可能引起此问题的代码。
从堆栈跟踪中,我怀疑您的WebService客户端中存在一些创建数组或复制数组的代码。
另外,请检查您的Vm参数是否设置正确。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接