Spring MVC 系列之IntrospectorCleanupListener

这是Spring 框架的Listener 类:org.springframework.web.util.IntrospectorCleanupListener

此监听器主要是为了防止由java.beans.Introspector导致的内存泄漏问题。.

JDK中的java.beans.Introspector类是用于检查Java 类是否符合JavaBean规范。

注:javaBean是一种java语言写成的可重用组件(类),遵循以下规范:

1、类必须使用public修饰。

2、必须保证有公共无参数构造器。

3、包含了属性的操作方法(getter/setter)。

如果有的程序或框架用到该类,那么就会启用系统级别的缓存,此缓存会存放一些曾加载并分析过的JavaBean引用。当Web 服务器关闭后,由于此缓存还存放着这些对JavaBean的引用,导致GC没办法回收Web 容器中的JavaBean对象。久而久之内存占用就会越来越大,造成内存泄露。

而Spring 的IntrospectorCleanupListener就是为了解决该问题而存在的。IntrospectorCleanupListener类会在Web 服务器停止后检查并清理缓存里面的引用。

Spring自身不会出现这种问题,因为Spring在加载并分析完一个类之后会马上刷新 JavaBeans Introspector缓存,这就保证Spring中不会出现这种内存泄漏的问题。但有些程序和框架在使用了JavaBeans Introspector之后,没有进行清理工作(如 Quartz,Struts),最后导致内存泄漏。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。