转载Spring IntrospectorCleanupListener
生活随笔
收集整理的這篇文章主要介紹了
转载Spring IntrospectorCleanupListener
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
"在服務(wù)器運(yùn)行過(guò)程中,Spring不停的運(yùn)行的計(jì)劃任務(wù)和OpenSessionInViewFilter,使得Tomcat反復(fù)加載對(duì)象而產(chǎn)生框架并用時(shí)可能產(chǎn)生的內(nèi)存泄漏,則使用IntrospectorCleanupListener作為相應(yīng)的解決辦法。"
對(duì)于這一句話(huà),引用關(guān)于IntrospectorCleanupListener一段解釋:
引用
spring中的提供了一個(gè)名為org.springframework.web.util.IntrospectorCleanupListener的監(jiān)聽(tīng)器。它主要負(fù)責(zé)處理由 JavaBeans Introspector的使用而引起的緩沖泄露。spring中對(duì)它的描述如下:它是一個(gè)在web應(yīng)用關(guān)閉的時(shí)候,清除JavaBeans Introspector的監(jiān)聽(tīng)器.web.xml中注冊(cè)這個(gè)listener.可以保證在web 應(yīng)用關(guān)閉的時(shí)候釋放與掉這個(gè)web 應(yīng)用相關(guān)的class loader 和由它管理的類(lèi)如果你使用了JavaBeans Introspector來(lái)分析應(yīng)用中的類(lèi),Introspector 緩沖中會(huì)保留這些類(lèi)的引用.結(jié)果在你的應(yīng)用關(guān)閉的時(shí)候,這些類(lèi)以及web 應(yīng)用相關(guān)的class loader沒(méi)有被垃圾回收.不幸的是,清除Introspector的唯一方式是刷新整個(gè)緩沖.這是因?yàn)槲覀儧](méi)法判斷哪些是屬于你的應(yīng)用的引用.所以刪除被緩沖的introspection會(huì)導(dǎo)致把這臺(tái)電腦上的所有應(yīng)用的introspection都刪掉.需要注意的是,spring 托管的bean不需要使用這個(gè)監(jiān)聽(tīng)器.因?yàn)閟pring它自己的introspection所使用的緩沖在分析完一個(gè)類(lèi)之后會(huì)被馬上從javaBeans Introspector緩沖中清除掉.應(yīng)用程序中的類(lèi)從來(lái)不直接使用JavaBeans Introspector.所以他們一般不會(huì)導(dǎo)致內(nèi)部查看資源泄露.但是一些類(lèi)庫(kù)和框架往往會(huì)產(chǎn)生這個(gè)問(wèn)題.例如:Struts 和Quartz.單個(gè)的內(nèi)部查看泄漏會(huì)導(dǎo)致整個(gè)的web應(yīng)用的類(lèi)加載器不能進(jìn)行垃圾回收.在web應(yīng)用關(guān)閉之后,你會(huì)看到此應(yīng)用的所有靜態(tài)類(lèi)資源(例如單例).這個(gè)錯(cuò)誤當(dāng)然不是由這個(gè)類(lèi)自 身引起的.
用法很簡(jiǎn)單,就是在web.xml中加入:
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
只知道servlet標(biāo)準(zhǔn)不允許在web容器內(nèi)自行做線(xiàn)程管理,quartz的問(wèn)題確實(shí)存在。
對(duì)于Web容器來(lái)說(shuō),最忌諱應(yīng)用程序私自啟動(dòng)線(xiàn)程,自行進(jìn)行線(xiàn)程調(diào)度,像Quartz這種在web容器內(nèi)部默認(rèn)就自己?jiǎn)?dòng)了10線(xiàn)程進(jìn)行異步j(luò)ob調(diào)度的框架本身就是很危險(xiǎn)的事情,很容易造成servlet線(xiàn)程資源回收不掉,所以我一向排斥使用quartz。
quartz還有一個(gè)問(wèn)題就是不支持cluster。導(dǎo)致使用quartz的應(yīng)用都沒(méi)有辦法做群集。
總結(jié)
以上是生活随笔為你收集整理的转载Spring IntrospectorCleanupListener的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP_递归实现无限级分类
- 下一篇: Python调用golang