2013-05-24 13 views
12

Das Folgende ist V8-Code-Kommentar, ich verstehe Erklärung nicht ganz.v8 :: Persistent MarkIndependent, was genau macht diese Methode?

/** 
* 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); 

Antwort

1

Von einem post on v8-users:

denke ich, die genaue Bedeutung von 'unabhängigen' ein wenig, da 3.24 verschoben hat. Hier ist mein Verständnis dessen, was es in den letzten Versionen von V8:

  1. Es vermeidet die Kosten der Objektgruppenbehandlung. Wir verwenden keine Objektgruppen in node.js, aber ich denke Chrom macht das für DOM-Objekte; Wenn ein DOM-Objekt in der Sammlung lebt, dann sind logisch alle. Durch das Definieren einer Objektgruppe kann der Garbage Collector eine Verknüpfung unter Kosten für einen Verarbeitungsaufwand pro einzelnen Handle übernehmen.

  2. Unabhängige Handles können während geringfügiger Garbage Collections (Scavenge) zurückgewonnen werden. Abhängige Griffe werden nur während der Hauptkollektionen zurückerlangt und bleiben somit länger am Leben, was normalerweise unerwünscht ist; Ich denke, dass sie erst dann zur Sammlung kommen, wenn das Objekt, auf das sie verweisen, von dem neuen Raum ( Kinderzimmer) in den alten Raum befördert wurde.