目录
前言
Javascript是使用垃圾回收的语言,即是不需要开发者操心内存分配和回收,运行环境会在代码执行时管理内存。
一、基本思路
周期性的找出哪个变量不会再使用,然后释放它所占用的内存。
二、标记策略
垃圾回收程序必须跟踪记录哪个变量还会使用,哪个变量不会使用,以便回收内存。
举例:
function fun1() {
var a = 0;
function fun2() {
a++;
console.log(a);
}
return fun2;
}
var f = fun1();
f = null;//闭包死亡
上面例子中,全局变量f由闭包函数获取到局部变量a的值,但产生的副作用就是fun1()的活动对象并不能在它执行完毕后销毁,所以就产生了哪些变量是有用的问题,通常有两种方式
(1)标记清理
这是js中最常用的垃圾回收策略。顾名思义,这种方法分为两步:先标记,然后清理
举例说明:
function f1(){
let a="a";//做个标记 ,进入环境
let b="b";//做个标记 ,进入环境
let c="c";//做个标记 ,进入环境
console.log(speak);
}
f1() //代码执行完毕 里面被标记过的变量,又被标记为离开