详细介绍 JavaScript 中的引用计数垃圾回收?
引用计数垃圾回收
这是最简单的垃圾回收算法。此算法寻找那些没有任何引用剩下的对象。如果一个对象没有引用,则它有资格进行垃圾回收。垃圾回收在下面的示例中进行了说明。
示例
var obj = {
x: { y: 2 }
};
// 2 objects created. One is referenced by the other as one of its properties.
// Obviously, none can be garbage-collected
obj = 1; // what was the 'x' property of the object originally in obj
// has zero references to it. It can be garbage collected.限制
在**循环**方面,引用计数垃圾回收存在限制,并在下面的示例中进行了解释。
示例
在以下示例中,创建了两个对象并相互引用,从而创建了一个循环。函数调用后,它们将超出范围,因此它们实际上是无用的,可以被释放。但是,引用计数算法认为,由于这两个对象中至少有一个被引用了一次,因此没有一个是垃圾回收的。
function f() {
var obj1 = {};
var obj2 = {};
obj1.p = obj2; // o1 references o2
obj2.p = obj1; // o2 references o1. This creates a cycle.
}
f();
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP