JavaScriptCore引擎如何知道对象没有引用?

JavaScriptCore引擎如何知道对象没有引用?,javascript,memory-management,Javascript,Memory Management,在JavascriptCore引擎中,当它启动垃圾收集时,它将清除一个未引用的对象,但我找不到这个对象的任何引用计数机制。 例如: var v1 = new Object(); var v2 = v1; v1 = null; // have reference, object won't be collected. v2 = null; // have no reference, object will be collected. 当我阅读JavaScriptCore源代码时,我没有找到任

在JavascriptCore引擎中,当它启动垃圾收集时,它将清除一个未引用的对象,但我找不到这个对象的任何引用计数机制。 例如:

var v1 = new Object(); 
var v2 = v1; 
v1 = null; // have reference, object won't be collected.
v2 = null; // have no reference, object will be collected.

当我阅读JavaScriptCore源代码时,我没有找到任何记录引用计数的代码,因此JSC如何知道对象的引用计数?

引用计数不是进行垃圾收集的唯一方法。查找mark sweep垃圾回收,这是另一种常见的算法。但是JSC如何知道一个带有对象的块没有活动并且需要进行清理呢?通过扫描内存并确定它无法从任何地方访问。JSC使用分代垃圾回收器。请在此处阅读: