一、前言
Javascript 内存分配的时机是在创建变量阶段,会自动进行内存的分配。并且在不占用该变量的情况下,会自动释放该内存。这个释放的过程称为"辣鸡回收"。
二、内存
内存一般是 CPU 所能直接寻址访问的、唯一的,大容量的存储器。它是一个大的字节数组,大小从数十万到数十亿。每个字节都有唯一地址。
一个程序需要执行,那么它必须映射到绝对地址,并加载到内存中。随着程序执行,进程可以通过产生绝对地址来访问内存的程序指令和数据。最后,程序执行结束,释放占用的内存,保证下一个程序能够正常执行。
三、内存生命周期
- 分配内存阶段
- 使用内存阶段
- 释放内存阶段
1. 分配内存阶段
该阶段是在创建变量的时候,会自动分配内存地址。
// 创建字符串类型变量
let obj = {
a: "robbie memory"
}
2. 使用内存阶段
该阶段是对创建的变量读写操作的时候进行。
// 读操作-将 newObj 的内存地址指向 obj
let newObj = obj
// 写操作
obj.a = "modify string value."
3. 释放内存阶段
当变量使用完成之后,并且不会再次使用的话,就会释放掉变量所占用的内存区域。
// 释放掉 newObj 的指向
newObj = null
// 注意:此时如果没有执行 newObj = null 的话,变量使用后未及时释放,
// 就会造成内存泄漏问题。