摘要:垃圾收集具有自動垃圾收集機制。管理內存優化內存的最佳方式,就是為執行中的代碼只保存必要的數據。一般適用于大多數的全局變量和全局對象的屬性。如執行完畢后,變量被銷毀手動解除的引用解除一個值的引用并不意味著自動回收該值所占的內存。
垃圾收集
JavaScript 具有自動垃圾收集機制。
標記清除JavaScript 中最常用的垃圾收集方式是標記清除。
當變量進入環境(如在函數中聲明一個變量)時,就將這個變量標記為“進入環境”;
當變量離開環境時,則將其標記為“離開環境”。
《js 高級程序設計》一書中指出:
引用計數到2008年為止,IE、Firefox、Opera、Chrome 和Safari 的JavaScript 實現使用的都是標記清除式的垃圾收集策略(或類似的策略),只不過垃圾收集的時間間隔互有不同。
引用計數的含義就是跟蹤記錄每一個值被引用的次數。
循環引用是使用引用計數模式的最大問題。如:
function a(){ var ObjectA = new Object(); var ObjectB = new Object(); ObjectA.aaa = ObjectB; ObjectB.bbb = ObjectA; }
另外一個例子是:
var element = document.getElementById("some_element"); var myObject = new Object(); myObject.element = element; element.someObject = myObject;
為了避免循環引用導致的內存問題。應該在不使用的時候手動斷開他們的鏈接。如:
myObject.element = null; element.someObject = null;
當垃圾收集器下次運行時,就會回收他們占用的內存。
性能問題雖然不建議代碼調用垃圾收集過程,但還是稍微提一下:
在IE 中,調用window.CollectGarbage()方法會立即執行垃圾收集。
在Opera 7中,調用 window.opera.collect()方法也會啟動垃圾收集。
優化內存的最佳方式,就是為執行中的代碼只保存必要的數據。一旦數據不再有用,就將其的值設置為null。這個方法就叫做接觸引用。一般適用于大多數的全局變量和全局對象的屬性。如:
function create(name){ var person = new Object(); person.name = name; return person; } var people = create("Oliver"); //create() 執行完畢后,person 變量被銷毀 document.write(people.name); people = null; //手動解除people 的引用
解除一個值的引用并不意味著自動回收該值所占的內存。而是以便垃圾收集器下次運行時將其收回。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86160.html
摘要:事件委托對事件處理程序過多的問題的解決方案就是事件委托。最適合采用事件委托技術的事件包括和。移除事件處理程序通常造成空事件處理程序的原因有可能是操作等或使用等。以防止部分瀏覽器出現內存問題。 事件委托 對事件處理程序過多的問題的解決方案就是事件委托。例如,click事件會一直冒泡到document層次。也就是說,我們可以為整個頁面指定一個onclick事件處理程序,而不必給每個可單擊的...
摘要:如很明顯可以看到,實際上是函數的局部變量。簡單的說就是,復制給參數,在函數內部是局部變量,無論怎么變化,都不影響的變化。 ECMAScript 變量可能包含兩種不同數據類型的值:基本類型值和引用類型值。 基本類型和引用類型的值 基本類型值(String,Number,Boolean,Null,Undefined)指的是簡單的數據段;引用類型值(保存在內存中的對象)指的是那些可能由多個值...
摘要:如調用函數聲明函數不會報錯使用函數表達式則不可以報錯創建函數的兩種方式,一個是函數聲明如第一種方式一個是函數表達式如第二種方式。第二種函數創建方式創建的函數叫匿名函數或拉姆達函數,因為關鍵字后面沒有標識符。 函數表達式的基本概念 name屬性和函數提升 首先,name屬性,通過這個屬性可以訪問到給函數指定的名字。(非標準的屬性)如: function People(){}; cons...
摘要:深入理解原型和閉包王福朋博客園深入理解原型和閉包一切都是對象原文鏈接本文要點一切引用類型都是對象,對象是屬性的集合。每個對象都有一個,可稱為隱式原型。另外注意,構造函數的函數名第一個字母大寫規則約定。 深入理解javascript原型和閉包 王福朋 - 博客園 —— 《 深入理解javascript原型和閉包》 1. 一切都是對象 原文鏈接:http://www.cnblogs.com...
摘要:上面代碼中,通過為組件指定事件的回調函數,確保了只有等到真實發生事件之后,才會讀取屬性。七表單代碼九要點文本輸入框的值,不能用讀取,而要定義一個事件的回調函數,通過讀取用戶輸入的值。 一.JSX簡介 JSX即JavaScript XML,一種在React組件內部構建標簽的類XML語法。在不使用JSX的情況下,React程序中創建DOM是這樣的: //v0.11 React.DOM.h1...
閱讀 3407·2021-11-25 09:43
閱讀 2294·2021-09-06 15:02
閱讀 3538·2021-08-18 10:21
閱讀 3341·2019-08-30 15:55
閱讀 2343·2019-08-29 17:06
閱讀 3534·2019-08-29 16:59
閱讀 962·2019-08-29 13:47
閱讀 2756·2019-08-26 13:24