V8:: Persistent MarkIndependent, что именно делает этот метод?

Ниже приведен комментарий кода 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);

Ответ 1

Из сообщения для v8-пользователей:

Я думаю, что точное значение "независимого" немного изменилось с тех пор 3,24. Вот мое понимание того, что он делает в последних версиях V8:

  • Это позволяет избежать затрат на обработку групповых объектов. Мы не используем группы объектов в node.js, но я думаю, что хром для объектов DOM; если один Объект DOM в коллекции жив, а затем логически все. Определение группы объектов позволяет сборщику мусора стоимость некоторых издержек на обработку для каждого дескриптора.

  • Независимые ручки могут быть восстановлены во время небольших сборок мусора (очистка). Зависимые ручки восстанавливаются только во время основные коллекции и, таким образом, остаются живыми дольше, что обычно нежелательно; Я думаю, что они становятся доступными только после объект, на который они указывают, был продвинут из нового пространства ( питомник) в старое пространство.