详细说明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垃圾收集器使用诸如引用计数垃圾收集之类的某些算法来找出不再使用的内存。