栈(stack)
- 存放基本数据类型
- 自动分配、释放内存空间
- 每个数据段占的内存大小一致
- 读写速度快
所有方法内定义的变量都是保存在栈内存中,方法执行完毕后,对应的内存栈也销毁。
栈溢出:一般出现在递归调用方法的时候,调用轨迹太长导致栈内存不够用
堆(heap)
- 存放复杂、引用数据类型的值
- 动态分配内存,不会自动释放,等垃圾回收机制自动释放
- 大小不固定
数据可以被多个变量引用,可以反复利用
简单数据类型:
Number、String、Boolean、Null、undefined
复杂数据类型:
Array、Function、Object