js 垃圾回收 标记清除 疑问

问题描述:

我在看书时看到这段话有点蒙B
图片说明
谁能帮为解释一下

简单说:就是垃圾回收器会每隔一段时间扫描一次内存,当然这个时间应该是很短,在扫描的过程中垃圾回收器会把所有的内存的变量全部加上标记,然后如果有你需要用到的内存,垃圾回收器就会把你需要用到的内存的标记删掉,意思就是说,这个内存我不清除,但是会把有标记的全部删掉,这就是垃圾回收器的一次清理工作。这个清理工作实际上应该是高频的。

垃圾回收机制gc 意思就是这样的,把所有的变量都先打上一个 要回收的 标记,我都不要 ,但是如果 在运行环境中,后面还有调用的话,那我就把这个回收的标志去掉,(也就是不回收,), 这个好理解
被环境中的变量引用的变量 ,这个是指哪些呢? 看个例子

var arrA =[1,2,3];
var arrB = arrA;
arrB.pop();
console.log(arrA);//[1,2]
你会发现好奇怪哦 ,明明我就是动了arrA为什么arrB 也改变了.这个就是引用机制,对于 引用类型(数组,对象等),赋值给一个变量,并没有产生两个对象,只是把这个变量引用同一个对象(简单的理解就是,你给他赋值了,但是还是同一个东东)