Persistent MarkIndependent,这个方法到底是做什么的

v8::Persistent MarkIndependent, what does this method exactly do?

本文关键字:什么 方法 MarkIndependent Persistent      更新时间:2023-10-16

以下是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);

摘自一篇关于v8-users的文章:

我认为"独立"的确切含义已经改变了一点3.24. 以下是我对V8最新版本的理解:

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

  2. 独立句柄可以在小型垃圾收集(清除)期间回收。从属句柄仅在主要的收藏品,因此存活的时间更长,这通常是不受欢迎的;我认为他们只有在它们所指向的对象已经从新的空间