【问题标题】:Memory leak warnings while shutting down tomcat server running a camel application关闭运行骆驼应用程序的tomcat服务器时出现内存泄漏警告
【发布时间】:2015-11-09 03:48:24
【问题描述】:

我在 tomcat 服务器中运行基于 spring 的骆驼应用程序。当我关闭 tomcat 服务器时,我在日志中看到下面这表明我可能有内存泄漏:

日志

严重:Web 应用程序 [/xxx-v001] 似乎已经启动了一个名为 [CamelJettyServer(0x62e871db)-1036] 的线程,但未能停止它。这很可能造成内存泄漏。 2015 年 8 月 16 日上午 7:08:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

我在路由中使用了 Jetty Http 组件:

<bean id="jettyOutbound" class="org.apache.camel.component.jetty.JettyHttpComponent" destroy-method="shutdown">     
           <property name="minThreads" value="1024"/>
           <property name="maxThreads" value="1024"/>
           <property name="httpClientMinThreads" value="64"/>
           <property name="httpClientMaxThreads" value="64"/>
    </bean>

问题是在我完全关闭 tomcat 之后,我仍然看到很少的线程挂起。在获取线程列表(ps -aef | grep tomcat)后,我需要使用“kill -9 pid”手动杀死它们。我尝试了关闭方法,但它仍然没有帮助。

【问题讨论】:

    标签: java apache-camel


    【解决方案1】:

    应该有一个组件的关闭挂钩,如javadoc 中所述。在这种情况下,它看起来是 doStop()。

    一般来说,你应该把它放在生命周期监听器中,比如ServletContextListener.contextDestoyed()

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2018-01-12
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2011-10-23
      • 1970-01-01
      相关资源
      最近更新 更多