12

以下是v8代码注释,我不太明白解释。

/**
 * Marks the reference to this object independent. Garbage collector
 * is free to ignore any object groups containing this object.
 * Weak callback for an independent handle should not
 * assume that it will be preceded by a global GC prologue callback
 * or followed by a global GC epilogue callback.
 */
inline void MarkIndependent();
inline void MarkIndependent(Isolate* isolate);
4

1 回答 1

1

来自v8-users 的帖子

我认为自 3.24 以来“独立”的确切含义发生了一些变化。以下是我对它在最近版本的 V8 中的作用的理解:

  1. 它避免了对象组处理的成本。我们不在 node.js 中使用对象组,但我认为 chromium 可以用于 DOM 对象;如果集合中的一个 DOM 对象是活动的,那么逻辑上都是活动的。定义一个对象组可以让垃圾收集器走捷径,但代价是每个句柄都有一些处理开销。

  2. 可以在次要垃圾收集(清除)期间回收独立句柄。依赖句柄仅在主要收集期间被回收,因此存活时间更长,这通常是不可取的;我认为只有当他们指向的对象从新空间(托儿所)提升到旧空间时,他们才有资格获得收藏。

于 2016-10-01T15:44:57.953 回答