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