2013-05-24 10 views
12

Di seguito è il commento del codice v8, non capisco perfettamente la spiegazione.v8 :: Mark persistente Indipendente, cosa fa esattamente questo metodo?

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

risposta

1

Da un post on v8-users:

Credo che l'esatto significato di 'indipendente' si è spostata un po 'dal momento che 3.24. Qui è la mia comprensione di ciò che fa nelle versioni recenti di V8:

  1. evita il costo di gestione del gruppo oggetto. Non usiamo gruppi di oggetti in node.js ma penso che cromo funzioni per oggetti DOM; se un oggetto DOM nella raccolta è attivo, allora logicamente lo sono tutti. La definizione di un gruppo di oggetti consente al garbage collector di prendere un collegamento a un costo di un overhead di elaborazione per singolo handle.

  2. Le maniglie indipendenti possono essere recuperate durante le raccolte di rifiuti secondarie (scavenges). Le maniglie dipendenti vengono recuperate solo durante le raccolte principali e rimangono quindi in vita più a lungo, il che di solito è indesiderabile; Penso che diventino idonei per la raccolta solo quando l'oggetto a cui puntano è stato promosso dal nuovo spazio (il vivaio ) nel vecchio spazio.