使用IntrospectorCleanupListener 解决quartz引起的内存泄漏问题_quartz 定时任务 报错会引起内存增长吗-程序员宅基地

技术标签: Spring  

"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用IntrospectorCleanupListener作为相应的解决办法。"

对于这一句话,引用关于IntrospectorCleanupListener一段解释:

spring中的提供了一个名为 org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由  JavaBeans Introspector的使用而引起的缓冲泄露。spring中对它的描述如下:它是一个在web应用关闭的时候,清除JavaBeans Introspector的监听器.web.xml中注册这个listener.可以保证在web 应用关闭的时候释放与掉这个web 应用相关的class loader 和由它管理的类如果你使用了JavaBeans Introspector来分析应用中的类,Introspector 缓冲中会保留这些类的引用.结果在你的应用关闭的时候,这些类以及web 应用相关的class loader没有被垃圾回收.不幸的是,清除Introspector的唯一方式是刷新整个缓冲.这是因为我们没法判断哪些是属于你的应用的引用.所以删除被缓冲的introspection会导致把这台电脑上的所有应用的introspection都删掉.需要注意的是,spring 托管的bean不需要使用这个监听器.因为spring它自己的introspection所使用的缓冲在分析完一个类之后会被马上从javaBeans Introspector缓冲中清除掉.应用程序中的类从来不直接使用JavaBeans Introspector.所以他们一般不会导致内部查看资源泄露.但是一些类库和框架往往会产生这个问题.例如:Struts 和Quartz.单个的内部查看泄漏会导致整个的web应用的类加载器不能进行垃圾回收.在web应用关闭之后,你会看到此应用的所有静态类资源(例如单例).这个错误当然不是由这个类自 身引起的. 

  1. 用法很简单,就是在web.xml中加入:  
  2. <listener>  
  3.     <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  4. </listener> 

只知道servlet标准不允许在web容器内自行做线程管理,quartz的问题确实存在。  

对于Web容器来说,最忌讳应用程序私自启动线程,自行进行线程调度,像Quartz这种在web容器内部默认就自己启动了10线程进行异步job调度的框架本身就是很危险的事情,很容易造成servlet线程资源回收不掉,所以我一向排斥使用quartz。

quartz还有一个问题就是不支持cluster。导致使用quartz的应用都没有办法做群集。

如果是我的话,我采取的办法就是自己单独启动一个Job Server,来跑job,不会部署在web容器中。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liyantianmin/article/details/50727317

智能推荐

五年的Java程序员成长自述。-程序员宅基地

文章浏览阅读137次。恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物..._java程序自述报告

蓝牙mesh协议的架构讲解_mesh 协议详解-程序员宅基地

文章浏览阅读4.8k次,点赞3次,收藏10次。BLE Mesh 的基础架构  BLE Mesh的架构一共可以分成8层,如图所示1.蓝牙低功耗(Bluetooth Low Energy Core Specification)  最底下的 蓝牙低功耗 这一层,我将它标成了浅蓝色与上面几层进行了区分,原因是 蓝牙低功耗 并非仅是mesh架构的其中一层,而是完整的蓝牙低功耗协议栈,是提供基础无线通信功能所必需的组件,这些功能可为位于其上的mes..._mesh 协议详解

搭建Angular并引入NG-ZORRO组件库_导入ng-zorro全部组件代码-程序员宅基地

文章浏览阅读551次,点赞7次,收藏11次。搭建Angular并引入NG-ZORRO组件库_导入ng-zorro全部组件代码

电脑组装笔记:手把手教你如何自己组装电脑_电脑组装教程-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏27次。电脑组装基本操作:手把手教你如何自己组装电脑第一步:安装CPU拆开所有包装后的第一步,先把CPU安装到主板的CPU插座上。先要把插座上的保护盖翻开,然后再把CPU放入CPU插座。然后把cp..._电脑组装教程

51单片机实现LCD1602的显示_pz51 lcd1602-程序员宅基地

文章浏览阅读1.3k次。51单片机实现LCD1602的显示_pz51 lcd1602

视频编解码(一):ffmpeg编码H.264帧类型判断_max_b_frames-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏29次。本文主要讲述ffmpeg编码过程中是如何设置I帧,B帧及P帧的,以及如何通过代码判断帧类型。之前看过很多网上的文章,讲述如何判断I帧,B帧,P帧,然而都是停留在H.264官方文档中的定义,如果不结合ffmpeg,就仿佛纸上谈兵,有点不切实际,而且很多文章将I帧与I Slice混为一谈,将I Slice当做I帧,这其实是错的。本文就结合ffmpeg讲解ffmpeg中是如何编码各种帧类型的,并纠正..._max_b_frames

随便推点

深入了解与全面解析华为认证(HCIA/HCIP/HCIE)_hice华为认证-程序员宅基地

文章浏览阅读1.1k次,点赞34次,收藏30次。华为认证是华为技术实力的体现,也是个人职业竞争力的重要体现。通过华为认证,可以帮助我们更好地规划自己的职业发展道路,提升自己的专业技能和综合素质,为未来的职业发展打下坚实的基础。t=N7T8t=N7T8t=N7T8网络工程师入门&华为认证(HCIA/HCIP/HCIE)进阶学习资源包https://mp.weixin.qq.com/s?_hice华为认证

当当网商品详情数据接口方法丨当当商品详情API接口文档_当当网图书api接口c#开发实例下载-程序员宅基地

文章浏览阅读350次,点赞6次,收藏7次。获取商品描述信息:通过调用接口方法,可以获取商品的详细描述信息,包括商品的图片、规格参数、包装清单等。获取商品推荐信息:通过调用接口方法,可以获取商品的推荐信息,包括同类别的其他商品推荐、热销商品推荐等。获取商品基本信息:通过调用接口方法,可以获取商品的基本信息,包括商品的标题、价格、销量、评分等。获取商品库存信息:通过调用接口方法,可以获取商品的库存信息,包括商品的库存数量、预计发货时间等。获取商品评论信息:通过调用接口方法,可以获取商品的用户评论信息,包括评论内容、评分、好评率等。_当当网图书api接口c#开发实例下载

实现从oss(阿里云)服务器批量下载文件_oss按照文件夹下载-程序员宅基地

文章浏览阅读2.4w次,点赞6次,收藏28次。参考链接:开放式存储(OSS)Java API手册 1.0 documentation一、OSS上同一路径下文件批量下载假设OSS上Bucket中有四个文件:fun/like/001.avi、fun/like/002.avi、fun/like/003.jpg、fun/like/004.mp3,批量下载四个文件,并将四个文件存储本地路径:“D:/fun/like/”下,即:D:/fun/like/(..._oss按照文件夹下载

MySQL中benchmark_MySQL的benchmark函数-程序员宅基地

文章浏览阅读241次。MySQL实现了很多独特的函数,有时候使用起来是非常的方便,或许这就是开源的好处吧。这里记录一下benchmark函数,一个用于测试MySQL函数性能的函数。benchmark函数只有两个参数,第一个是执行次数,第二个是要测试的函数或者表达式。返回的结果始终是0,执行时间才是我们需要的结果:mysql> select benchmark(1e8,current_date());+——————..._mysql benchmark(

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小区宠物管理系统k8n96_小区宠物管理源码-程序员宅基地

文章浏览阅读137次。选好题目最起码有方向,接下来找相应的源代码进行参考就行,下面的选题有合适的选题源代码可以在文末尾进行获取参考。做毕业设计的过程也是不断修正的过程要和自己的计划安排进行比对,慢了要赶工,快了可以调整工作量。选题的确定需要查阅大量的资料,要搞清楚自己大概想要研究的方向是什么。可以选择自己感兴趣的学科或者强势的学科进行研究,同时要多和毕业指导老师多交流,征求老师的意见和建议,最后确立选题。ssm基于SSM的社区疫情防控管理信息系统的设计与实现khjit。ssm基于SSM的资产管理平台的设计与实现hx448。_小区宠物管理源码

ArcSDE10.x创建企业级地理数据库报:The geodatabase system table could not be created.GDB_Items : Error (-51)_arcmap建立数据库gdb_tables_last_modified : error (-51)-程序员宅基地

文章浏览阅读8.7k次。环境ArcGIS10.x for Desktop、Oracle11g问题使用ArcGIS 10.x for Desktop的Create Enterprise Geodatabase工具创建企业级地理数据库,出现错误:Executing: EnableEnterpriseGeodatabase "Database Connections\Connection to 10.20.128.230.sd_arcmap建立数据库gdb_tables_last_modified : error (-51)

推荐文章

热门文章

相关标签