js css htmlweb前端

JS垃圾回收机制-引用计数

2022-04-12  本文已影响0人  姜治宇

js的垃圾回收,最常使用的方法是引用计数。
只要有引用堆内存的地方,引用计数就要加1。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放。

var a = [1,2];
var b = a;
a = null;
console.log(b);

第一行,[1,2]这个数组开辟了一块内存,变量a对其引用了,所以引用计数为1。
第二行,变量b也引用了这个数组,引用计数为2。
第三行,a变量回收,引用计数为1。
第四行,因为引用计数不为0,因此[1,2]未被释放,还可以打印出来。
但是weakset和weakmap就比较特殊:

const wm = new WeakMap();
const element = document.getElementById('example');
wm.set(element, 'some information');
element = null;

第二行,变量element指向了dom节点,引用计数为1;
第三行,weakmap也对dom节点进行了引用,但这个是弱引用,不计入引用计数,因此引用计数还是1;
最后一行,当变量element回收后,引用计数为0,dom节点也被释放了。

上一篇下一篇

猜你喜欢

热点阅读