详细解释 JavaScript 的内存生命周期?
内存周期
无论编程语言是什么,任何编程语言的内存周期几乎都相同。
内存生命周期包含 3 个步骤
1) 内存分配。
2) 使用已分配的内存(读取或写入)
3) 当内存不再需要时释放已分配的内存。
在低级语言中,第一部分和最后一部分是直接关联的,但在高级语言(如 JavaScript)中是间接关联的。
1) JavaScript 中的内存分配
JavaScript 被称为垃圾回收语言,也就是说,当声明变量时,它会自动为它们分配内存。当没有更多引用声明的变量时,分配的内存将被释放。
示例
在下面的示例中,javascript 为一个数字、一个字符串和一个对象分配了内存。
var n = 989; // allocates memory for a number var s = 'qwerty'; // allocates memory for a string var o = { a: 1, b: null }; // allocates memory for an object and contained values
2) 使用已分配的值
使用值基本上意味着读取和写入分配的内存。这可以通过读取或写入变量或对象属性的值,甚至将参数传递给函数来完成。
3) 当内存不再需要时释放已分配的内存
大多数内存管理问题都出现在此阶段。这里艰巨的任务是确定何时不再需要分配的内存。为了解决此问题,大多数高级语言都嵌入了一段称为垃圾回收器的软件。
垃圾回收器的任务是跟踪内存分配并找出何时不再需要分配的内存,以便释放它。不幸的是,此过程只是一个估计,因为知道某个内存块是否需要的通用问题是不可判定的。(算法无法跟踪)
Javascript 垃圾回收器使用一些算法,例如引用计数垃圾回收,来确定不再使用的内存。
广告