日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
專家訪談:Tomcat7的內(nèi)存泄漏保護(hù)

今天上午為網(wǎng)友第一時(shí)間對(duì)“Tomcat 7 RC4發(fā)布”進(jìn)行了報(bào)道。Tomcat 7的內(nèi)存泄漏保護(hù)一直是關(guān)注,今年年初,DZone網(wǎng)站對(duì)Mark Thomas針對(duì)Tomcat 7的內(nèi)存泄漏保護(hù)的功能進(jìn)行了采訪,Mark Thomas是SpringSource的首席軟件工程師,同時(shí)也是Tomcat的代碼提交負(fù)責(zé)人。

在Tomcat 7中引入了一項(xiàng)新的功能:內(nèi)存泄漏保護(hù)。該功能可以解決Web應(yīng)用中的很多種會(huì)導(dǎo)致內(nèi)存泄漏的問(wèn)題,特別是在應(yīng)用重新加載時(shí)候的內(nèi)存釋放問(wèn)題。

下面是具體訪談的內(nèi)容(水平有限,對(duì)內(nèi)容做了很多精簡(jiǎn),詳情請(qǐng)看英文版):

DZone:什么原因會(huì)導(dǎo)致Web應(yīng)用重新加載時(shí)的內(nèi)存泄漏,這個(gè)內(nèi)存泄漏是怎么表現(xiàn)出來(lái)的?

Mark Thomas:最直接的現(xiàn)象就是PermGen產(chǎn)生OutOfMemoryError的錯(cuò)誤,然后Tomcat掛掉

PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,如果你的WEB APP下都用了大量的第三方j(luò)ar,其大小超過(guò)了jvm默認(rèn)的大小(4M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。

為了防止該問(wèn)題的發(fā)生,必須保證重載時(shí)web應(yīng)用的類加載器沒(méi)有保存任何對(duì)象的引用。

DZone:請(qǐng)告訴我們Tomcat以前在重載時(shí)的內(nèi)存泄漏問(wèn)題

Mark Thomas:Tomcat的這個(gè)問(wèn)題在我加入這個(gè)項(xiàng)目之前就一直都存在

DZone:那么是不是所有Tomcat中會(huì)導(dǎo)致內(nèi)存泄漏問(wèn)題的Bug都已經(jīng)修復(fù)了呢?

Mark Thomas:應(yīng)該說(shuō)是我們已知的所有問(wèn)題都已經(jīng)得到解決,可能還存在一些未知的問(wèn)題。

 
Tomcat 的虛擬機(jī)內(nèi)存剖析

DZone:程序庫(kù)、Java API都有什么用的bug會(huì)導(dǎo)致內(nèi)存泄漏呢?

Mark Thomas:內(nèi)存泄漏問(wèn)題都有相同的原因,例如在Web應(yīng)用的ClassLoader初始化一個(gè)對(duì)象,然后這個(gè)對(duì)象將自己的引用保存到某個(gè)實(shí)例或者Registry中,當(dāng)重載時(shí)從ClassLoader撤銷這個(gè)對(duì)象時(shí),Registry引用的對(duì)象還在,這樣就會(huì)導(dǎo)致內(nèi)存泄漏。

一般程序庫(kù)可能存在內(nèi)存泄漏的地方有:

1.JDBC驅(qū)動(dòng)注冊(cè)

2.一些日志框架

3.在ThreadLocal中保存對(duì)象,但是并不去刪除它

4.啟動(dòng)了線程,但沒(méi)有停止它

而Java API存在內(nèi)存泄漏的地方包括:

1.使用javax.imageio API (the Google Web Toolkit can trigger this)

2.使用java.beans.Introspector.flushCaches() (Tomcat does this to prevent memory leaks caused by this caching)

3.使用XML解析器(the root cause is unknown due to a bug in the JRE)

4.使用RMI遠(yuǎn)程方法調(diào)用(somewhat ironically, causes a leak related to the garbage collector)

5.從Jar文件中讀取資源

DZone:請(qǐng)告訴我們,Tomcat 7是如何處理這些問(wèn)題的

Mark Thomas:?jiǎn)栴}的關(guān)鍵在于Tomcat 7的WebappClassLoader類的clearReferences()方法。

對(duì)于前面提到的Java API中存在問(wèn)題,通過(guò)確保Tomcat核心第一次使用這些API,然后讓應(yīng)用去調(diào)用,來(lái)防止內(nèi)存泄漏。關(guān)于如何保護(hù)內(nèi)存泄漏,請(qǐng)看JreLeakPreventionListener class.

DZone:依你看來(lái),在控制內(nèi)存泄漏方面,Tomcat 7比現(xiàn)有版本的Tomcat有多大的提升?

Mark Thomas:有顯著的提升,呵呵

DZone:Tomcat 7的開發(fā)進(jìn)展如何,有一個(gè)確切的發(fā)布日期嗎?

Mark Thomas:Tomcat 7的開發(fā)進(jìn)展非常順利,JSP和EL 2.2規(guī)范已經(jīng)實(shí)現(xiàn),Servlet 3.0的規(guī)范實(shí)現(xiàn)也接近完成。

DZone:關(guān)于Tomcat 7,你還有什么其他要補(bǔ)充的嗎?


網(wǎng)站題目:專家訪談:Tomcat7的內(nèi)存泄漏保護(hù)
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/cdiisps.html