垃圾收集机制
JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。这样我们在编写 JavaScript 代码时就不需在关心内存使用问题了,所需内存分配和已用内存的回收完全实现了自动管理。
这种垃圾收集机制的原理其实非常简单:
找出那些不再使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性的执行这一操作。
局部变量的生命周期:
局部变量只在函数的执行过程中存在。
在这个过程中,首先会为局部变量在栈(或堆)内存上分配相应空间,以便存储他们的值。然后在函数中使用这些变量,直到函数执行结束。此时,局部变量就没有存在的必要了,因此可以释放它们的内存以供将来使用。
在垃圾自动收集机制中,最关键的在于如何判断这个变量是否还有存在的必要。也就是判断是否该释放这个变量的内存。因此,垃圾收集器必须跟踪哪个变量有用哪个变量没用,对于不再有用的变量打上标记,以备将来回收内存。
实现这个功能通常有两个策略:标记清除和引用计数。
1. 标记清除
标记清除是 JavaScript 中最常用的垃圾收集方式。
当变量进入环境(例如,在函数中声明一个变量)时,将这个变量标记为 “进入环境” 。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为我们在这个环境中可能随时会用到它们。当变量离开环境时,则将其标记为 “离开环境”。
2. 引用计数
另一种不太常见的垃圾收集策略就是引用计数。
引用计

JavaScript的自动垃圾收集机制通过标记清除和引用计数策略管理内存。局部变量仅在函数执行期间存在,结束后会被释放。标记清除是主要的垃圾收集方式,当变量离开环境时标记为可回收。引用计数策略则跟踪引用次数,当次数为0时回收,但存在循环引用问题导致效率降低。
&spm=1001.2101.3001.5002&articleId=84594318&d=1&t=3&u=5900cac24b484712828a9cab6d4701d7)

被折叠的 条评论
为什么被折叠?



