成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Javascript內(nèi)存的注意要點

liaosilzu2007 / 1740人閱讀

摘要:垃圾收集具有自動垃圾收集機制。管理內(nèi)存優(yōu)化內(nèi)存的最佳方式,就是為執(zhí)行中的代碼只保存必要的數(shù)據(jù)。一般適用于大多數(shù)的全局變量和全局對象的屬性。如執(zhí)行完畢后,變量被銷毀手動解除的引用解除一個值的引用并不意味著自動回收該值所占的內(nèi)存。

垃圾收集

JavaScript 具有自動垃圾收集機制。

標記清除

JavaScript 中最常用的垃圾收集方式是標記清除。

當變量進入環(huán)境(如在函數(shù)中聲明一個變量)時,就將這個變量標記為“進入環(huán)境”;

當變量離開環(huán)境時,則將其標記為“離開環(huán)境”。

《js 高級程序設計》一書中指出:

到2008年為止,IE、Firefox、Opera、Chrome 和Safari 的JavaScript 實現(xiàn)使用的都是標記清除式的垃圾收集策略(或類似的策略),只不過垃圾收集的時間間隔互有不同。

引用計數(shù)

引用計數(shù)的含義就是跟蹤記錄每一個值被引用的次數(shù)。

循環(huán)引用是使用引用計數(shù)模式的最大問題。如:

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;

為了避免循環(huán)引用導致的內(nèi)存問題。應該在不使用的時候手動斷開他們的鏈接。如:

myObject.element = null;
element.someObject = null;

當垃圾收集器下次運行時,就會回收他們占用的內(nèi)存。

性能問題

雖然不建議代碼調(diào)用垃圾收集過程,但還是稍微提一下:

在IE 中,調(diào)用window.CollectGarbage()方法會立即執(zhí)行垃圾收集。
在Opera 7中,調(diào)用 window.opera.collect()方法也會啟動垃圾收集。

管理內(nèi)存

優(yōu)化內(nèi)存的最佳方式,就是為執(zhí)行中的代碼只保存必要的數(shù)據(jù)。一旦數(shù)據(jù)不再有用,就將其的值設置為null。這個方法就叫做接觸引用。一般適用于大多數(shù)的全局變量和全局對象的屬性。如:

function create(name){
    var person = new Object();
    person.name = name;
    return person;
}
var people = create("Oliver");
//create() 執(zhí)行完畢后,person 變量被銷毀
document.write(people.name);
people = null;
//手動解除people 的引用

解除一個值的引用并不意味著自動回收該值所占的內(nèi)存。而是以便垃圾收集器下次運行時將其收回。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/86160.html

相關(guān)文章

  • JavaScript 事件——“內(nèi)存和性能”注意要點

    摘要:事件委托對事件處理程序過多的問題的解決方案就是事件委托。最適合采用事件委托技術(shù)的事件包括和。移除事件處理程序通常造成空事件處理程序的原因有可能是操作等或使用等。以防止部分瀏覽器出現(xiàn)內(nèi)存問題。 事件委托 對事件處理程序過多的問題的解決方案就是事件委托。例如,click事件會一直冒泡到document層次。也就是說,我們可以為整個頁面指定一個onclick事件處理程序,而不必給每個可單擊的...

    YPHP 評論0 收藏0
  • Javascript變量注意要點

    摘要:如很明顯可以看到,實際上是函數(shù)的局部變量。簡單的說就是,復制給參數(shù),在函數(shù)內(nèi)部是局部變量,無論怎么變化,都不影響的變化。 ECMAScript 變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。 基本類型和引用類型的值 基本類型值(String,Number,Boolean,Null,Undefined)指的是簡單的數(shù)據(jù)段;引用類型值(保存在內(nèi)存中的對象)指的是那些可能由多個值...

    booster 評論0 收藏0
  • JavaScript函數(shù)表達式——“函數(shù)遞歸和閉包”注意要點

    摘要:如調(diào)用函數(shù)聲明函數(shù)不會報錯使用函數(shù)表達式則不可以報錯創(chuàng)建函數(shù)的兩種方式,一個是函數(shù)聲明如第一種方式一個是函數(shù)表達式如第二種方式。第二種函數(shù)創(chuàng)建方式創(chuàng)建的函數(shù)叫匿名函數(shù)或拉姆達函數(shù),因為關(guān)鍵字后面沒有標識符。 函數(shù)表達式的基本概念 name屬性和函數(shù)提升 首先,name屬性,通過這個屬性可以訪問到給函數(shù)指定的名字。(非標準的屬性)如: function People(){}; cons...

    winterdawn 評論0 收藏0
  • 深入理解javascript原型和閉包

    摘要:深入理解原型和閉包王福朋博客園深入理解原型和閉包一切都是對象原文鏈接本文要點一切引用類型都是對象,對象是屬性的集合。每個對象都有一個,可稱為隱式原型。另外注意,構(gòu)造函數(shù)的函數(shù)名第一個字母大寫規(guī)則約定。 深入理解javascript原型和閉包 王福朋 - 博客園 —— 《 深入理解javascript原型和閉包》 1. 一切都是對象 原文鏈接:http://www.cnblogs.com...

    jemygraw 評論0 收藏0
  • React要點入門學習總結(jié)

    摘要:上面代碼中,通過為組件指定事件的回調(diào)函數(shù),確保了只有等到真實發(fā)生事件之后,才會讀取屬性。七表單代碼九要點文本輸入框的值,不能用讀取,而要定義一個事件的回調(diào)函數(shù),通過讀取用戶輸入的值。 一.JSX簡介 JSX即JavaScript XML,一種在React組件內(nèi)部構(gòu)建標簽的類XML語法。在不使用JSX的情況下,React程序中創(chuàng)建DOM是這樣的: //v0.11 React.DOM.h1...

    Towers 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<