色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 引用計(jì)數(shù)器

阮建安1年前6瀏覽0評論
JavaScript是一種動態(tài)語言,具有自動垃圾回收的機(jī)制,即不需要程序員手動釋放動態(tài)分配的內(nèi)存。而JavaScript垃圾回收的核心機(jī)制就是引用計(jì)數(shù)器。引用計(jì)數(shù)器是一種跟蹤每個(gè)對象引用次數(shù)的垃圾收集算法。在JavaScript中,每個(gè)賦值為對象的變量都被認(rèn)為是該對象的一個(gè)引用,而每個(gè)對象在被創(chuàng)建的時(shí)候都會被初始化為1。當(dāng)對象的引用計(jì)數(shù)降為0時(shí),其所占用的內(nèi)存會被立即回收。 舉個(gè)例子,我們先在瀏覽器控制臺中定義一個(gè)對象,并將其賦值給變量a:

var a = {

name: 'job',

age: 24

};

此時(shí),我們可以使用以下語句來查看a所引用的對象的引用計(jì)數(shù):

console.log(Object.getOwnPropertyNames(a.__proto__))

console.log(Object.getOwnPropertyNames(a))

console.log(Object.getOwnPropertyNames(Object.prototype))

結(jié)果如下:

["constructor", "__defineGetter__", "__defineSetter__", ...]

["name", "age"]

["constructor", "__defineGetter__", ...]

我們發(fā)現(xiàn)a引用的對象的引用計(jì)數(shù)為1,因?yàn)樗蛔兞縜引用,但是該對象的__proto__和Object.prototype的引用計(jì)數(shù)都為0,因?yàn)樗鼈儧]有被任何對象引用。 現(xiàn)在,我們在控制臺中再次定義一個(gè)變量b,并將a所引用的對象賦值給變量b:

var b = a;

這時(shí),我們再次查看a、b以及它們引用的對象的引用計(jì)數(shù):

console.log(Object.getOwnPropertyNames(a.__proto__))

console.log(Object.getOwnPropertyNames(a))

console.log(Object.getOwnPropertyNames(b))

console.log(Object.getOwnPropertyNames(Object.prototype))

結(jié)果如下:

["constructor", "__defineGetter__", "__defineSetter__", ...]

["name", "age"]

["name", "age"]

["constructor", "__defineGetter__", ...]

我們發(fā)現(xiàn)a和b引用的對象的引用計(jì)數(shù)都變成了2,因?yàn)樗鼈兌家昧送粋€(gè)對象。此時(shí),如果我們將變量b的值設(shè)置為null,則該對象的引用計(jì)數(shù)會減1:

b = null;

這時(shí),我們再次查看a和它引用的對象的引用計(jì)數(shù):

console.log(Object.getOwnPropertyNames(a.__proto__))

console.log(Object.getOwnPropertyNames(a))

console.log(Object.getOwnPropertyNames(Object.prototype))

結(jié)果如下:

["constructor", "__defineGetter__", "__defineSetter__", ...]

["name", "age"]

["constructor", "__defineGetter__", ...]

我們發(fā)現(xiàn)b變量與它之前所引用的對象的引用關(guān)系被解除,因此該對象的引用計(jì)數(shù)減至1,而a變量與該對象的引用關(guān)系依舊存在,因此該對象繼續(xù)被保留在內(nèi)存中。 總的來說,引用計(jì)數(shù)器是JavaScript進(jìn)行垃圾回收的重要機(jī)制之一。在使用JavaScript進(jìn)行開發(fā)時(shí),了解引用計(jì)數(shù)器的工作原理是非常有必要的。