<!--web.xml-->
<listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener>
1、此監聽(tīng)器主要用于解決java.beans.Introspector導致的內存泄漏的問(wèn)題
2、此監聽(tīng)器應該配置在web.xml中與Spring相關(guān)監聽(tīng)器中的第一個(gè)位置(也要在ContextLoaderListener的前面)
3、JDK中的java.beans.Introspector類(lèi)的用途是發(fā)現Java類(lèi)是否符合JavaBean規范如果有的框架或程序用到了Introspector類(lèi),那么就會(huì )啟用一個(gè)系統級別的緩存,此緩存會(huì )
存放一些曾加載并分析過(guò)的JavaBean的引用。當Web服務(wù)器關(guān)閉時(shí),由于此緩存中存放著(zhù)這些JavaBean的引用,所以垃圾回收器無(wú)法回收Web容器中的JavaBean對象,最后導致
內存變大。而org.springframework.web.util.IntrospectorCleanupListener就是專(zhuān)門(mén)用來(lái)處理Introspector內存泄漏問(wèn)題的輔助類(lèi)。IntrospectorCleanupListener會(huì )在
Web服務(wù)器停止時(shí)清理Introspector緩存,使那些Javabean能被垃圾回收器正確回收。Spring自身不會(huì )出現這種問(wèn)題,因為Spring在加載并分析完一個(gè)類(lèi)之后會(huì )馬上刷新
JavaBeans Introspector緩存,這就保證Spring中不會(huì )出現這種內存泄漏的問(wèn)題。但有些程序和框架在使用了JavaBeans Introspector之后,沒(méi)有進(jìn)行清理工作(如 Quartz,Struts),最后導致內存泄漏
聯(lián)系客服