2013-05-24 15 views
12

Poniżej znajduje się komentarz do kodu V8, nie do końca rozumiem wyjaśnienie.v8 :: Trwałe MarkIndependent, co dokładnie robi ta metoda?

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

Odpowiedz

1

od A post on v8-users:

myślę dokładne znaczenie 'niezależny' przesunął się trochę od 3,24. Oto moje zrozumienie tego, co robi w najnowszych wersjach V8:

  1. Pozwala to uniknąć kosztów obsługi grupy obiektów. Nie używamy grup obiektów w węźle node.js, ale myślę, że chrom dla obiektów DOM; jeśli jeden obiekt DOM w kolekcji jest żywy, to logicznie wszystkie są. Definiowanie grupy obiektów umożliwia śmieciarzowi pobranie skrótu pod kosztu pewnego narzutu przetwarzania na pojedynczy uchwyt.

  2. Niezależne uchwyty można odzyskać podczas drobnych wyrzucania śmieci (śmieciarzy). Uzależnione rękojeści są odzyskiwane tylko podczas głównych zbiorów, przez co pozostają dłużej żywe, co zwykle jest niepożądane; Myślę, że kwalifikują się one do zbierania tylko wtedy, gdy obiekt, o którym mowa, został przeniesiony z nowej przestrzeni (przedszkola ) do starej przestrzeni.