Ani*_*yan 2 javascript garbage-collection
我知道在 Java 和 C# 中,垃圾收集器仅适用于引用类型(不适用于原始类型)并且仅适用于堆,因为 Java 和 C# 中的对象存储在堆中。
JavaScript 中的引用类型(数组、对象、函数)存储在堆中,原始类型(数字、布尔值、字符串、未定义、空值)存储在堆栈中。这是一个关于这个的链接。
在 JavaScript 中有几种垃圾收集器算法,其主要原则是引用计数。这些算法是 Mark-and-Sweep 和 Reference Counting(现代算法是 Mark-and-Sweep)。算法计数引用,原始类型没有引用,我猜它们不能被垃圾收集。
在文章中没有关于如何释放 JavaScript 原始类型的字样。我的观点是当当前执行上下文完成它的工作时它被释放。
那么 JavaScript 实际上是如何管理原始类型变量的内存的呢?
ECMAScript 语言规范中没有任何内容说明原语不会被垃圾收集。同样,规范中也没有任何内容说 Primitives 是垃圾收集的。事实上,规范中也没有说对象是垃圾收集的。
实际上,规范根本没有提及内存管理。例如,不使用堆栈的实现将是完全兼容的。
所以,简短的回答是:你无法知道 Primitives 是否被垃圾收集,因为规范允许两者。
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |