Gunoier din v8, un ghid ilustrat - devschacht - mediu

Bine, să începem.

Ce este v8?

Care este colectorul de gunoi?

Cea mai importantă sarcină de colectare a gunoiului este abilitatea de a controla utilizarea memoriei unui program specific. Limbi, cum ar fi C, sunt de obicei conectate la gestionarea memoriei de program, și să aloce și dealocă-l în cadrul programului. ECMAScript, pe de altă parte, nu are o interfață pentru gestionarea memoriei (da, acest lucru înseamnă că nu există nici un API corespunzător). Asta, în general, aceasta înseamnă că toate drepturile de a gestiona memoria de program ™ V8 transmis.

Din moment ce noi nu avem acces la o cantitate infinită de memorie, activitatea de colector de gunoi este că trebuie să treacă prin toate obiectele pentru care sunt alocate de memorie, precum și pentru a determina dacă sunt sau nu sunt morți. Cei care sunt în viață ar trebui să fie amintit, cei care sunt morți sunt eliminate, iar memoria este returnat la grămadă.

Ce este un morman. Un buchet - aceasta regiune nestructurate din care alocate obiectele de memorie. Distribuția este o dinamică, deoarece dimensiunea / durata de viață / numărul de obiecte nu este cunoscută, astfel încât alocarea și Dealocarea memoriei are loc în timpul executării programului.

Prin urmare, dacă ne uităm la modelul competitiv, o mulțime de a lucra direct cu stiva de apel, deoarece obiectele sunt afișate într-o stivă, necesită alocare de memorie. Se va arata ceva de genul:

Gunoier din v8, un ghid ilustrat - devschacht - mediu

Dead or Alive?

Verificarea de bază că obiectul este viu sau mort, pe baza faptului dacă programul sau clientul poate executa codul pentru a realiza aceasta. Obiectul cel mai realizabil, așa cum s-ar putea crede, este probabil să obiecteze declarate în domeniul de aplicare rădăcină.

Unele ++ legăturile C (sau web-API pe client) sunt, de asemenea, o parte din rădăcină, astfel încât să puteți accesa direct metode, cum ar fi setInterval.

Despre accesibilități poate, de asemenea, cred ca acest lucru: dacă un alt obiect sau obiectul rădăcină va fi capabil să-l, și dacă da, memoria necesară pentru obiectul este stocat.

Deci, cum putem ajunge la colectarea gunoiului? (Spune-mi! Spune-mi!)

Gunoier din v8, un ghid ilustrat - devschacht - mediu

În scopul de colectare a gunoiului morman V8 împarte în două părți: tineri și spațiul vechi. Când efectuați operații care necesită alocarea de memorie, V8 alocă spațiu în prima parte. Când continuați să adăugați lucruri împreună, vei alerga în cele din urmă de memorie, astfel încât motorul V8 va rula de curățare. Pentru obiectele nou create, memoria este alocată foarte repede dintr-o colecție scurt și rapid, curățate în mod regulat (la îndepărtarea obiectelor deja mort). Odată obiectele „supraviețui“ câteva (2 să fie exact), cicluri de curățare, acestea sunt transferate în spațiul vechi, colectorul de gunoi este procesat într-o buclă separată la finalizare.

Gunoier din v8, un ghid ilustrat - devschacht - mediu

obiecte vechi - cei care au experimentat mai mult de un ciclu de colectare a gunoiului, adică, ei continuă să se refere la alte obiecte, și ei trebuie să rămână în memorie. De obicei, ele nu se referă la obiecte mici, dar ele continuă să aibă referințe la obiecte mai mari. Este de dorit, pentru a permite amestecarea generațiilor, așa cum se face de curățare mai puțin pură.

🆒 sources.js

Urmați-ne naMediume, kontribyutte naGithabe, comunică vgruppe telegramă, ceas vTvittereikanale telegramă, în curând va conduce un podcast. Nu pierde.

articole similare