点击上方“蓝字”关注本公众号
原文地址:https://felixgerschau.com/javascript-memory-management/#memory-life-cycle
原文标题:JavaScript's Memory Management Explained
大多数时候,作为一个JavaScript开发人员,您可能不知道任何关于内存管理的知识。毕竟,JavaScript引擎会为您处理这些问题。
不过,在某个时刻,您会遇到一些问题,比如内存泄漏,只有知道内存分配是如何工作的,才能解决这些问题。
在本文中,我将向你介绍内存分配和垃圾回收的工作原理,以及如何避免一些常见的内存泄漏。
内存生命周期
在JavaScript中,当我们创建变量、函数或任何你能想到的东西时,JS引擎会为此分配内存,并在不再需要时释放它。
分配内存是在内存中占用空间的过程,而释放内存是释放空间,准备用于其他用途。
每当我们分配一个变量或创建一个函数时,它的内存总是经过以下相同的阶段:
分配内存
JavaScript为我们处理这个问题:它为我们创建的对象分配我们需要的内存。
使用内存
使用内存是我们在代码中显式地做的事情:读写内存只不过是读写变量。
释放内存
这个步骤也由JavaScript引擎处理。一旦分配的内存被释放,它就可以用于新的用途。
内存管理上下文中的“对象”不仅包括JS对象,还包括函数和函数作用域。
内存堆和堆栈
我们现在知道,对于我们在JavaScript中定义的所有内容,引擎会分配内存并在不再需要时释放内存。
我想到的下一个问题是:这个数据要放在哪里?
JavaScript引擎有两个地方可以存储数据:内存堆和堆栈。
堆和堆栈是引擎用于不同目的的两种数据结构。
堆栈:静态内存分配
<