[英]JavaScript memory management pitfalls?
我知道 JavaScript 有一個垃圾收集器。 因此,使用delete刪除的只是該對象的一個引用,當不再有這個對象的引用時,由GC刪除。
JavaScript 很棘手,因為有閉包、模糊的命名空間和原型繼承,所以現在知道何時或為什么並不總是很明顯。
我正在編寫一個相當大的 JavaScript 項目,希望避免內存泄漏,同時限制全局內存使用。 我根本不在優化階段(讓我們先讓這些東西工作:-)),但最好了解內存管理的良好實踐,以避免編寫糟糕的代碼。
根據我的經驗,根據瀏覽器的不同,垃圾收集器的實現很好/很差。 應用良好的面向對象編程實踐是一個好的開始。
我唯一的建議是:不要通過連接 DOM 和 javascript 對象(不會被 DOM 和 JS GC 清除的循環引用)造成內存泄漏。 這些錯誤將比您在應用程序中實例化的任何對象消耗更多的內存。
有關 DOM/JS 內存泄漏的更多詳細信息。 http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx
我認為通過在 DOM 節點上存儲數據,您可以輕松創建並非所有瀏覽器都可以處理的循環引用。 例如:
this.element = document.getElementById('something');
this.element.attachedObject = this;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.