📜  JavaScript 中的垃圾回收(1)

📅  最后修改于: 2023-12-03 15:31:40.539000             🧑  作者: Mango

JavaScript 中的垃圾回收

JavaScript 是一种自动垃圾回收的编程语言。垃圾回收是一种内存管理技术,它自动释放不再需要的内存,以免程序运行时内存被耗尽。

JavaScript 中的垃圾回收机制基于两个主要的概念:引用和可达性。

引用是指一个变量或对象属性,它指向另一个对象或原始类型的值。例如:

let obj1 = { name: "Alice" };
let obj2 = obj1;

在这个例子中,obj1obj2 都指向同一个对象。这个对象有一个名为 name 的属性,它的值为字符串 "Alice"。

可达性是指当一个对象被引用时,它是可达的。如果一个对象不可达(即没有被引用),它就成为垃圾,可以被垃圾回收机制自动释放。例如:

let obj1 = { name: "Alice" };
let obj2 = obj1;
obj1 = null;

在这个例子中,当 obj1 被赋值为 null 时,它不再指向之前的对象。这意味着这个对象不再可达,成为了垃圾。垃圾回收机制将自动释放它的内存。

每个 JavaScript 引擎都有自己的垃圾回收器。垃圾回收器在运行时周期性地扫描内存,查找不再可达的对象,并将其释放。每个垃圾回收器的实现都有自己的优点和限制。在 JavaScript 中,垃圾回收器通常用于释放不再使用的动态分配的内存,例如通过 new 关键字创建的对象、数组和函数。

总结:

  • JavaScript 是一种自动垃圾回收的编程语言。
  • 垃圾回收机制基于引用和可达性。
  • 引擎内部周期性的扫描内存,查找不再可达的对象,并将其释放。

参考文献: