Skip to content

JS 的存储结构

栈结构

调用栈

管理函数调用的关系的一种数据结构

函数调用

运行一个函数,函数名称跟着一对小括号执行

一种数据结构,后进先出

总结

在执行上下文创建以后,JavaScript 引擎会将执行上下文压入栈中,把这种管理执行上下文称为执行上下文栈,即调用栈 函数执行完毕之后,JavaScript 引擎会将函数的上下文出栈

栈溢出

调用栈是有大小的(容量限制),超过一定数目,就会栈溢出

内存空间

代码空间、栈空间、堆空间

基本原始类型

Number, String, Boolean, Undefined, Null, Symbol, BigInt(存放安全数据,超出范围安全处理)

引用类型

Object

代码空间

存放可执行代码

栈空间

基本原始类型数据存放与栈空间中(调用栈)

堆空间

引用类型存放与堆空间中(存放的是引用地址)

JS 内存管理 变量分配

静态区

  • 存放全局变量(基本类型)

调用栈

  • 栈中执行上下文(作用域链 = 变量对象、this 指向环境)
  • 只能读写自己栈帧的内存
  • 调用栈调用结束自然销毁,实时性高

  • 对象、数组、函数(引用类型)
  • 动态的读写
  • 不具备很高的实时性,由单独的 gc 线程控制

Released under the MIT License.