似乎有很多關於IE中內存泄漏的信息,以及Web開發人員如何避免它們,但我無法找到避免FF中泄漏的信息。我發現很多關於終端用戶如何調整他們的偏好或擴展開發人員技巧的隨機提示,但很少介紹我可以作爲Web開發人員來確保我的頁面不會泄漏。我錯過了什麼嗎?這似乎很懶,只是把它歸咎於用戶,並說「你有太多的擴展」。或者主要模式與IE相同 - 循環引用和所有這些?另外,如果有人知道任何工具來解決FF中的泄漏問題,那就太好了。我發現這個: https://addons.mozilla.org/en-US/firefox/addon/2490/ 但它顯然只是爲了Chrome和擴展開發。如何避免在Firefox中導致內存泄漏?
回答
除了支持唯一真正安全的方式的設計模式之外,還需要徹底測試您的頁面。要監視瀏覽器的內存使用情況,任務管理器沒問題,但Process Explorer提供更準確的結果。
JavaScript是內存泄漏的原因之一,但也要小心頁面上的Flash影片。我們的內容團隊從我們的設計部門添加了一部電影,該電影使用了第三方過渡效果,並且每20秒就吞下10Mb。只要觀看電影循環,在TaskManager中看到影響發生時的內存跳轉,它永遠不會完全釋放它。
我不知道是否有Firefox的具體信息,但通用技巧仍然適用。
我建議你仔細檢查所有循環和遞歸函數。重複使用現有對象而不是創建新對象,並確保臨時對象和基元退出範圍,以便可以釋放它們。
您可以強制在FireFox中運行垃圾收集器。 Garbadge Collector將銷燬不再使用的版本對象&。使用垃圾收集器「泄漏內存」的唯一可能性不是「泄漏」,而是一種毫無意義的引用:刪除所有對不希望使用的對象的引用。
閱讀此頁更多:
http://adblockplus.org/blog/different-ways-to-force-garbage-collection
一束您瞭解如何避免內存泄漏什麼發現瀏覽器是關於如何避免導致瀏覽器無法回收它應該回收的內存的事情。
但是,在許多情況下,更重要的問題是關於Web頁面持有的對象,他們不再需要。只有瀏覽器的工作才能回收不再「可達」的內容 - 即腳本/頁面無法再訪問的內容。如果您將數組中的對象累積起來,而不是在完成對象時將其刪除,則隨着數組變大,內存使用量將會增加,瀏覽器無法做到這一點。
要說另一種方式:這是網頁中的內存泄漏問題,而不是瀏覽器中的問題。你需要的工具是一個內存分析工具,用於檢查頁面中可訪問的對象,以便您可以判斷是否有內容中的內容不應再繼續保留。爲Firefox編寫這樣的工具已經列在我要做的一段時間了,但我還沒有完成。我認爲編寫一個集成到Firebug中可能會有一些正在進行的工作。
- 1. 避免內存泄漏。 (WeakReference)
- 2. 避免內存泄漏
- 3. FLEX:避免內存泄漏
- 4. 避免內存泄漏
- 5. 避免dojo內存泄漏?
- 6. 避免內存泄漏
- 7. 如何避免共享內存泄漏
- 8. 如何避免字節[]內存泄漏?
- 9. 如何避免內存泄漏?
- 10. 避免JNI C中Java內存泄漏
- 11. 避免C++中的內存泄漏?
- 12. 避免回調中的內存泄漏?
- 13. SiftDescriptorExtractor導致內存泄漏
- 14. vtkWindowToImageFilter導致內存泄漏?
- 15. SKEmitterNode導致內存泄漏
- 16. SmtpClient.Send導致內存泄漏
- 17. pushViewController導致內存泄漏
- 18. CALayer導致內存泄漏?
- 19. SoundPlayer導致內存泄漏?
- 20. glTexImage2D導致內存泄漏
- 21. setTimeout導致內存泄漏
- 22. Dispatcher.beginInvoke導致內存泄漏
- 23. AVAudioPlayer導致內存泄漏
- 24. strdup()導致內存泄漏?
- 25. IntPtr導致內存泄漏?
- 26. NSRunAlertPanel導致內存泄漏
- 27. uipickerview導致內存泄漏
- 28. URL.createObjectURL導致內存泄漏
- 29. net.sourceforge.jtds.jdbc.cache.SimpleLRUCache導致內存泄漏
- 30. AdView導致內存泄漏
感謝您使用Process Explorer。不知道這一點。看起來很棒! – mrdanimal 2010-05-20 17:33:15