Skip to content

JS 垃圾回收机制

原理:js 具有自动垃圾回收机制,垃圾收集器会定期找出那些不再继续使用的变量,然后释放其内存

标记清除

是 js 最常用的垃圾收回机制,当变量进入执行环境时,就标记这个变量为“进入环境“。进入环境的变量所占用的内存就不能释放,当变量离开环境时,则将其标记为“离开环境“,等待垃圾回收

引用计数

语言引擎有一张"引用表",保存了内存里面所有的资源(通常是各种值)的引用次数。如果一个值的引用次数是 0,就表示这个值不再用到了,因此可以将这块内存释放

如果一个值不再需要了,引用数却不为 0,垃圾回收机制无法释放这块内存,从而导致内存泄漏

js
const arr = [1, 2, 3, 4]
console.log('hello world')

上面代码中,数组[1, 2, 3, 4]是一个值,会占用内存。变量 arr 是仅有的对这个值的引用,因此引用次数为 1。尽管后面的代码没有用到 arr,它还是会持续占用内存,通过设置 arr 为 null,就解除了对数组[1,2,3,4]的引用,引用次数变为 0,就被垃圾回收了