栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Tomcat 6内存泄漏日志条目

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tomcat 6内存泄漏日志条目

当您定义一个外部标志时,应该在设置

volatile
标志的同时轮询该线程并退出该线程。否则,该线程可能永远不会看到其他线程所做的更改。

但是,标准API中已经有类似的功能-
它称为

interrupt()
方法和
Thread.currentThread().isInterrupted()
。无需重复已经存在的逻辑。请参阅:停止特定的Java线程。

话虽这么说,调用

interrupt()
每个线程也是一个坏主意,因为不能保证所有线程都会对此做出响应。检查您的异常情况后,我发现以下线程未正确清理:

  • com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0
    -关闭C3P0数据源。由于您使用的是Spring,因此只需添加
    destroy-method="close"
    。我们已经完成了这个线程。

  • File Reaper
    -据我所知,该线程是由FileCleaningTracker创建的。
    FileCleaningTracker.exitWhenFinished()
    关闭应用程序时(或者不再需要该类,我从没使用过)时,需要显式调用,或者让Spring进行此操作(请参见上文)。某些第三方库可能会使用它并且无法正确关闭-这意味着它存在错误。

  • pool-1-thread-22
    -这是
    Executors
    Utility内部创建的线程之一
    ExecutorService
    。确保
    shutdown()
    在关闭过程中调用应用程序中的每个此类池。

  • org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-2
    -Quartz工作线程(实际运行作业的线程)。
    SchedulerFactoryBean
    自动为您关闭调度程序,我认为Tomcat错误在这里,我也经常看到此错误。不过貌似设置
    SchedulerFactoryBean.waitForJobsToCompleteOnShutdown
    true
    解决这个问题。

  • com.iteezy.shared.domain.DirEntry.data
    -我不确定这一点。它是您自己的线程需要在关闭时中断,还是H2数据库线程(?)需要检查其堆栈以猜测其来源。

底线是:不要仅仅杀死所有移动的内容(实际上,Tomcat在发出此警告之后会为您执行此操作),而是确定线程的来源,并使用特定

close()
于框架/库的方法来进行进一步清理。要温柔。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508585.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号