2009-06-10 79 views
8

我工作的應用程序的UI最近重做了Ext.js,我注意到IE瀏覽器的內存使用情況在查看時看起來非常大。使用IE時,Ext.js是否存在已知的內存問題?Ext.js是否存在內存問題

+0

感謝您的所有答案。我會將它們傳遞給我團隊中的UI開發人員。 – 2009-06-11 02:10:34

回答

9

在你的問題中跳出來的第一件事就是你在IE中看到了這一點。我的團隊最近經歷了同樣的問題(IE上的Extjs)。事實證明,Ext不是罪魁禍首,而是IE可能是原因。

快速谷歌爲「IE關閉內存泄漏」會發現你很多的解釋,但基本要點如下:

IE使用兩個單獨的引擎來管理DOM和JavaScript。當JavaScript調用來創建一個DOM元素時,JavaScript引擎會傳遞給另一個來創建它。如果您將JavaScript附加到DOM元素上的事件,則會從DOM一側向JavaScript一側創建一個鏈接。

問題在於,每個引擎都有自己的垃圾收集,無法看到其他引擎。所以循環引用非常容易遇到,可以很快地吃大量的記憶。

0

就我而言,我還沒有聽說過ExtJS中的顯着內存泄漏。雖然我確信已經有一些了,但他們通常會修復得非常快,而且社區很大,所以大部分的bug都是已知的。

確保您的設計基於單獨的組件,您可以在不再需要時添加和刪除它們,因爲大多數情況下,ExtJS網頁只會加載一次,並且MEM會充滿您提供的其他組件它。一旦完成使用組件,您可以使用Ext.destroy(this.el)釋放一些內存。

此外,請確保使用Firebug追蹤應該刪除的任何組件或對象。

1

我認爲使用ExtJS爲非經驗的程序員編程時,創建內存泄漏非常容易。這本身不是ExtJS問題。這是ExtJS編程範例,它可以讓程序員輕鬆地犯這樣的錯誤。

根據我的經驗,當試圖使用ExtJS進行直接的AJAX聊天時,我創建了內存泄漏。當在AJAX回調中不斷創建一些對象(如數據存儲,網格操作)時,這些對象不會被釋放和銷燬。必須使用特殊且非常聰明的技術來避免ExtJS的內存泄漏,它不僅與AJAX或回調有關。

總而言之,ExtJS是一個偉大的庫,但它必須謹慎使用。

+1

商店有一個autoDestroy屬性可以幫助解決這個問題。 – geographika 2010-07-12 10:06:50

0

檢出this thread in their forums它涵蓋了由孤立元素引起的Ext 2.2中的大量泄漏。看來Ext 2.2.1修復了其中的大部分。

這個問題仍然是開放的,順便說一句。 ;)