我工作的應用程序的UI最近重做了Ext.js,我注意到IE瀏覽器的內存使用情況在查看時看起來非常大。使用IE時,Ext.js是否存在已知的內存問題?Ext.js是否存在內存問題
回答
在你的問題中跳出來的第一件事就是你在IE中看到了這一點。我的團隊最近經歷了同樣的問題(IE上的Extjs)。事實證明,Ext不是罪魁禍首,而是IE可能是原因。
快速谷歌爲「IE關閉內存泄漏」會發現你很多的解釋,但基本要點如下:
IE使用兩個單獨的引擎來管理DOM和JavaScript。當JavaScript調用來創建一個DOM元素時,JavaScript引擎會傳遞給另一個來創建它。如果您將JavaScript附加到DOM元素上的事件,則會從DOM一側向JavaScript一側創建一個鏈接。
問題在於,每個引擎都有自己的垃圾收集,無法看到其他引擎。所以循環引用非常容易遇到,可以很快地吃大量的記憶。
就我而言,我還沒有聽說過ExtJS中的顯着內存泄漏。雖然我確信已經有一些了,但他們通常會修復得非常快,而且社區很大,所以大部分的bug都是已知的。
確保您的設計基於單獨的組件,您可以在不再需要時添加和刪除它們,因爲大多數情況下,ExtJS網頁只會加載一次,並且MEM會充滿您提供的其他組件它。一旦完成使用組件,您可以使用Ext.destroy(this.el)釋放一些內存。
此外,請確保使用Firebug追蹤應該刪除的任何組件或對象。
我認爲使用ExtJS爲非經驗的程序員編程時,創建內存泄漏非常容易。這本身不是ExtJS問題。這是ExtJS編程範例,它可以讓程序員輕鬆地犯這樣的錯誤。
根據我的經驗,當試圖使用ExtJS進行直接的AJAX聊天時,我創建了內存泄漏。當在AJAX回調中不斷創建一些對象(如數據存儲,網格操作)時,這些對象不會被釋放和銷燬。必須使用特殊且非常聰明的技術來避免ExtJS的內存泄漏,它不僅與AJAX或回調有關。
總而言之,ExtJS是一個偉大的庫,但它必須謹慎使用。
商店有一個autoDestroy屬性可以幫助解決這個問題。 – geographika 2010-07-12 10:06:50
檢出this thread in their forums它涵蓋了由孤立元素引起的Ext 2.2中的大量泄漏。看來Ext 2.2.1修復了其中的大部分。
這個問題仍然是開放的,順便說一句。 ;)
- 1. ext.js DateTimeFilter或TimeFilter,這些是否存在?
- 2. ScriptManager.RegisterStartupScript(...)是否存在問題;
- 3. 這是否會導致內存問題?
- 4. 檢查共享內存是否存在,以及是否存在共享內存
- 5. 內存問題?
- 6. 內存問題
- 7. 內存問題
- 8. Firefox 4是否存在GZip問題?
- 9. Windows 7中是否存在explorer.exe問題?
- 10. 問題檢查行是否存在?
- 11. HttpUrlConnection是否存在併發性問題?
- 12. 「return await」是否存在性能問題?
- 13. SQL服務器是否存在問題
- 14. 在構建willRotateToInterfaceOrientation內部約束時是否存在問題?
- 15. 是否正在分配多餘的內存,是否存在內存泄漏?
- 16. 內存問題在WP7
- 17. 內存問題在C++
- 18. 內存問題在ios
- 19. 內存問題在cocos2dx
- 20. CoreImage內存問題在ios5
- 21. FindByIdentity在System.DirectoryServices.AccountManagment內存問題
- 22. ValueAnimator內存問題
- 23. Apache內存問題
- 24. ScrollView內存問題
- 25. Android內存問題
- 26. FragmentStatePagerAdapter內存問題
- 27. 內存問題iphone
- 28. iphone內存問題
- 29. UIImageView - 內存問題
- 30. IntelliJ內存問題
感謝您的所有答案。我會將它們傳遞給我團隊中的UI開發人員。 – 2009-06-11 02:10:34