org.springframework.web.util.IntrospectorCleanu...

看到好多項目的web.xml中都配置了java

Xml代碼 複製代碼  收藏代碼
  1. <listener>  
  2.       <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  3. </listener>  
<listener>
      <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

 這個是什麼東東呢?web

這是Introspector 緩存清除監聽器 spring

        Spring 提供了一個名爲 org.springframework.web.util.IntrospectorCleanupListener 的監聽器。它主要負責處理由 JavaBean Introspector 功能而引發的緩存泄露。IntrospectorCleanupListener 監聽器在 Web 應用關閉的時會負責清除 JavaBean Introspector 的緩存,在 web.xml 中註冊這個監聽器能夠保證在 Web 應用關閉的時候釋放與其相關的 ClassLoader 的緩存和類引用。若是您使用了 JavaBean Introspector 分析應用中的類,Introspector 緩存會保留這些類的引用,結果在應用關閉的時候,這些類以及Web 應用相關的 ClassLoader 不能被垃圾回收。不幸的是,清除 Introspector 的惟一方式是刷新整個緩存,這是由於無法準確判斷哪些是屬於本 Web 應用的引用對象,哪些是屬於其它 Web 應用的引用對象。因此刪除被緩存的 Introspection 會致使將整個 JVM 全部應用的 Introspection 都刪掉。須要注意的是,Spring 託管的 Bean 不須要使用這個監聽器,由於 Spring 的 Introspection 所使用的緩存在分析完一個類以後會立刻從 javaBean Introspector 緩存中清除掉,並將緩存保存在應用程序特定的 ClassLoader 中,因此它們通常不會致使內存資源泄露。可是一些類庫和框架每每會產生這個問題。例如 Struts 和 Quartz 的 Introspector 的內存泄漏會致使整個的 Web 應用的 ClassLoader 不能進行垃圾回收。在 Web 應用關閉以後,您還會看到此應用的全部靜態類引用,這個錯誤固然不是由這個類自身引發的。解決這個問題的方法很簡單,您僅需在 web.xml 中配置 IntrospectorCleanupListener 監聽器就能夠了緩存

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息