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 ではオブジェクト グループを使用しませんが、クロムは DOM オブジェクトに対して使用すると思います。コレクション内の 1 つの DOM オブジェクトが生きている場合、論理的にはすべて生きています。オブジェクト グループを定義すると、ガベージ コレクターは、個々のハンドルごとにいくらかの処理オーバーヘッドを犠牲にして、近道を取ることができます。

  2. 独立したハンドルは、マイナー ガベージ コレクション (スカベンジ) 中に再利用できます。依存ハンドルは主要なコレクション中にのみ再利用されるため、より長く存続しますが、これは通常望ましくありません。それらが指し示すオブジェクトが新しいスペース (保育園) から古いスペースに昇格された場合にのみ、コレクションの対象になると思います。

于 2016-10-01T15:44:57.953 に答える