# 七.内存管理
前言
JavaScript 的内存管理是自动进行的,在创建变量(对象,字符串等)时自动进行了内存分配,之后在代码执行,使用变量时占用这个内存,当不再使用变量后就内存会被回收,释放掉。在 JavaScript 中,这个过程被称为垃圾回收机制。
# 1.生命周期
不管什么语言,内存的生命周期基本是一致的,一般为以下几个阶段:
- 分配你所需要的内存。
- 使用分配到的内存(读,写)
- 不需要时将其释放,归还
JavaScript 语言中,第一步和第三步是 JavaScript 引擎
自动进行的
JavaScript 引擎
是一个专门处理 JavaScript 脚本的虚拟机。它本质上就是一段程序,可以将 JavaScript 代码编译为不同 CPU 对应的汇编代码,此外还负责执行代码,分配内存和垃圾回收等等
# 2.内存结构
JavaScript 引擎的
内存结构可以粗略分为两个部分:栈(Stack)、堆(Heap)
# 2.1 栈(Stack)
主要用于存放基本类型和变量类型的指针。栈内存自动分配大小相对固定的内存空间,并由系统自动释放。
# 2.2 堆(Heap)
主要用于存放对象类型数据,如对象,数组,函数等等。堆内存是动态分配内存,内存大小不一,也不会自动释放。
# 3.回收算法
JavaScript 引擎中有一个垃圾回收器(gc),它的主要作用是跟踪内存的分配和使用,以便当分配的内存不再使用时,自动释放它