1. 内存空间

1.栈与堆

可以粗浅的认为JavaScript的所有数据都保存在堆内存中。
但仍然需要基于堆栈数据结构的思路进行处理,比如JavaScript的执行上下文(会创建一个叫做变量对象的特殊对象)在逻辑上实现了堆栈。
栈(堆栈)空间: 最后被放进去,但可以最先被使用。即先进后出,后进先出。
堆空间: 无序的数据存储方式,只要知道名字就可以找到数据。

2.变量对象与基础数据类型

基础数据类型往往都会保存在变量对象中。
变量对象特殊,虽然也存放在堆内存中,理解时需要将其于堆内存区分开来。
基础数据类型可以直接访问和操作保存在变量中实际的值。
5种基础数据类型: Undefined、Null、Boolean、Number、String。

3.引用数据类型与堆内存

引用数据类型的值是保存在堆内存中的对象。
不能直接访问和操作对象的堆内存空间。
操作对象实际上是在操作对象的引用。
引用可以理解为保存在变量对象中的一个与堆内存的实际值相关联的地址。

4.内存空间管理

自动垃圾收集机制使内存被自动管理。
自动垃圾收集机制的原理就是找出那些不再继续使用的值,然后释放其占用的内存。垃圾收集器会每隔固定的时间段就执行一次释放操作。
内存生命周期: 1. 分配所需内存;2. 使用所分配内存(读、写);3. 不需要时将其释放、归还。
垃圾收集器很容易判断并回收局部变量。但是全局变量需要自动释放内存空间的时间则很难判断,因此为确保性能问题需要尽量避免使用全局变量。

原文戳这里

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容