Java web应用程序中的内存泄漏

Java web应用程序中的内存泄漏,java,memory-leaks,Java,Memory Leaks,我有一个使用Netbeans IDE开发的web应用程序。我从WSDL添加了一个Web服务。问题是,每次我部署它时,它都会变得更重、更慢。有时它会使我的IDE崩溃 我不知道如何解决这个问题。我读了关于stackoverflow的其他问题,但他们只是建议扩展permSpace或类似的东西。我宁愿试着去理解哪里出了问题,为什么我的空间没有得到应有的清理 这是我在Tomcat的控制台中得到的: INFO: WSSERVLET13: JAX-WS context listener destroyed 1

我有一个使用Netbeans IDE开发的web应用程序。我从WSDL添加了一个Web服务。问题是,每次我部署它时,它都会变得更重、更慢。有时它会使我的IDE崩溃

我不知道如何解决这个问题。我读了关于stackoverflow的其他问题,但他们只是建议扩展permSpace或类似的东西。我宁愿试着去理解哪里出了问题,为什么我的空间没有得到应有的清理

这是我在Tomcat的控制台中得到的:

INFO: WSSERVLET13: JAX-WS context listener destroyed
13-nov-2013 16.24.02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
GRAVE: The web application [/SOAPolls] created a ThreadLocal with key of type [com.sun.xml.bind.v2.runtime.Coordinator$1] (value [com.sun.xml.bind.v2.runtime.Coordinator$1@53c6a7fc]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@173ebc5c]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
13-nov-2013 16.24.02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
GRAVE: The web application [/SOAPolls] created a ThreadLocal with key of type [org.glassfish.gmbal.generic.OperationTracer$1] (value [org.glassfish.gmbal.generic.OperationTracer$1@17c047f0]) and a value of type [java.util.ArrayList] (value [[]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
13-nov-2013 16.24.02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
GRAVE: The web application [/SOAPolls] created a ThreadLocal with key of type [com.sun.xml.bind.v2.ClassFactory$1] (value [com.sun.xml.bind.v2.ClassFactory$1@50b2e9be]) and a value of type [java.util.WeakHashMap] (value [{class javax.xml.bind.annotation.W3CDomHandler=java.lang.ref.WeakReference@14a877c0, class com.sun.xml.ws.runtime.config.Tubelines=java.lang.ref.WeakReference@404de8d8, class java.util.ArrayList=java.lang.ref.WeakReference@3af1dde3, class com.sun.xml.ws.runtime.config.TubelineDefinition=java.lang.ref.WeakReference@5d1e8050, class com.sun.xml.ws.runtime.config.TubeFactoryList=java.lang.ref.WeakReference@7d7a33f2, class com.sun.xml.ws.runtime.config.MetroConfig=java.lang.ref.WeakReference@61e89539, class com.sun.xml.ws.runtime.config.TubeFactoryConfig=java.lang.ref.WeakReference@6c9d0366, class javax.xml.bind.annotation.adapters.CollapsedStringAdapter=java.lang.ref.WeakReference@384a553f}]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
13-nov-2013 16.24.02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
GRAVE: The web application [/SOAPolls] created a ThreadLocal with key of type [org.glassfish.gmbal.generic.OperationTracer$1] (value [org.glassfish.gmbal.generic.OperationTracer$1@17c047f0]) and a value of type [java.util.ArrayList] (value [[]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
13-nov-2013 16.24.03 org.apache.catalina.startup.HostConfig deleteRedeployResources
我能做什么

另外:有没有办法手动清除我需要的空间,以便让我的应用程序运行多一点(这是一个临时解决方案,因为我在接下来的几天要考试)


编辑:我试图重新启动服务器。但有时,当我试图停止Tomcat时,IDE无法取消部署应用程序(一切都卡住了)。

解决方案是将所有需要的库文件(webservices*.jar,activation.jar)放在Tomcat\lib目录中,并将它们从您的webapp WEB-INF\lib中删除。

Netbeans在save上部署,因此,它不断增加空间。只要尝试重新启动服务器,如果您已经这样做了,请忽略this@lazyprogrammer我试过这个。但有时当我试图停止Tomcat时,IDE无法取消部署应用程序。最简单的选择是重新启动服务器,而不是不断地重新部署。@Kayaman我编辑了这个问题。正如我对lazyprogrammer所说的,我试图重新启动服务器,但有时这并没有帮助:所有服务器都陷入“取消部署”状态,我甚至无法终止Tomcat进程。那时已经太晚了。如果您想安全起见,可以使用“始终重新启动”而不是“重新部署”。如果它仍然崩溃,开始使用一个更好的应用服务器。我不再做那个项目了,但是你能不能帮我添加更多的细节?你的建议为什么有效?它有效是因为我测试了它。我遇到了同样的问题,并找到了这个解决方案。我几乎无法接受tomcat日志中的此类消息。即使它对生产现场没有负面影响,也会给人留下软件不完善的印象。我不是Tomcat开发人员,但我认为内存泄漏是因为这个故事涉及到不同的类加载器。将库直接放在tomcat中修复它。