【问题标题】:Memory leak when deploying the web application部署 Web 应用程序时发生内存泄漏
【发布时间】:2014-09-30 06:03:58
【问题描述】:
org.apache.catalina.startup.HostConfigdeployWAR
INFO:Deployingwebapplicationarchive.war

org.apache.catalina.loader.WebappClassLoadervalidateJarFile
INFO:validateJarFile(/usr/local/tomcat/webapps//WEB-INF/lib/servlet.jar)-jarnotloaded.SeeServletSpec2.3,section9.7.2.Offendingclass:javax/servlet/Servlet.class

AMorg.apache.catalina.loader.WebappClassLoaderclearReferencesJdbc
SEVERE:Thewebapplication[/]registeredtheJDBCdriver[org.postgresql.Driver]butfailedtounregisteritwhenthewebapplicationwasstopped.Topreventamemoryleak,theJDBCDriverhasbeenforciblyunregistered.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@3f929548])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@3086ca93])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@615d91c8])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@460e1368])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@461c34c6])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@65ccd71f])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@6b3f686f])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

Morg.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@fe1866b])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@1f3fe2f2])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@1b4c8de5])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@3ef7c363])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@7c3cb8e0])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.loader.WebappClassLoaderclearThreadLocalMap
SEVERE:Thewebapplication[/]createdaThreadLocalwithkeyoftype[com.opensymphony.xwork2.inject.ContainerImpl$10](value[com.opensymphony.xwork2.inject.ContainerImpl$10@5d580c58])andavalueoftype[java.lang.Object[]](value[[Ljava.lang.Object;@768db9d8])butfailedtoremoveitwhenthewebapplicationwasstopped.Thisisverylikelytocreateamemoryleak.

org.apache.catalina.startup.HostConfigcheckResources
INFO:Undeployingcontext[/]

我不明白这个问题。谁能解决这个问题?

我每次都通过杀死Java进程来重新启动tomcat。

它可以正常工作 10 到 15 分钟,然后每次都会挂起。

【问题讨论】:

    标签: postgresql memory-leaks tomcat6 ubuntu-10.04


    【解决方案1】:

    您的网络应用程序存在多个问题。

    1. 不要将任何版本的 servlet-api.jar 打包到您的应用程序中 - 容器会提供它。
    2. 您需要在 Web 应用程序停止时注销您的驱动程序。
    3. 您需要更加小心地使用 ThreadLocals。 ThreadLocal 永远不应存在于单个请求的范围之外。

    有关内存泄漏源以及如何修复它们的更多信息,请阅读以下内容: http://people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf

    【讨论】:

      猜你喜欢
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2012-11-09
      • 2018-06-01
      • 2012-05-05
      相关资源
      最近更新 更多