You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
De exemplu, dacă există un obiect într-o variabilă locală și acel obiect are o proprietate care face referire la alt obiect, acel obiect este considerat accesibil. Iar cele la care face referire sunt, de asemenea, accesibile. Urmează exemple detaliate.
35
-
=======
36
-
For instance, if there's an object in a global variable, and that object has a property referencing another object, *that* object is considered reachable. And those that it references are also reachable. Detailed examples to follow.
Spre exemplu, dacă există un obiect într-o variabilă globală, și acel obiect are o proprietate care face referire la alt obiect, *acel* obiect este considerat accesibil. Iar cele la care face referire sunt de asemenea accesibile. Urmează exemple detaliate.
38
27
39
28
În motorul limbajului Javascript există un proces de fundal care se numește [garbage collector](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)). El monitorizează toate obiectele și le șterge pe cele care au devenit inaccesibile.
40
29
@@ -164,19 +153,11 @@ Algoritmul de bază de colectare a reziduurilor este denumit "mark-and-sweep" (
164
153
165
154
Următorii pași ai "colectării reziduurilor" sunt efectuați regulat:
- "Garbage collector" ia rădăcinile și le "marchează" (le memorează).
169
157
- Apoi vizitează toate referințele dinspre ele.
170
-
- Apoi parcurge obiectele marcate și însemnează referințele *lor*. Toate obiectele vizitate sunt memorate pentru a nu vizita același obiect de două ori în viitor.
171
-
- ...Și așa mai departe până când nu există referințe nevizitate (accesibil din rădăcini).
172
-
- Toate obiectele, cu excepția celor marcate, sunt eliminate.
173
-
=======
174
-
- The garbage collector takes roots and "marks" (remembers) them.
175
-
- Then it visits and "marks" all references from them.
176
-
- Then it visits marked objects and marks *their* references. All visited objects are remembered, so as not to visit the same object twice in the future.
177
-
- ...And so on until every reachable (from the roots) references are visited.
- Apoi vizitează obiectele marcate și marchează referințele *lor*. Toate obiectele vizitate sunt memorate, pentru a nu vizita același obiect de două ori în viitor.
159
+
- ...Și așa mai departe până când fiecare referință (accesibilă din rădăcini) este vizitată.
160
+
- Toate obiectele cu excepția celor marcate sunt eliminate.
180
161
181
162
De exemplu, să presupunem că structura obiectului nostru arată așa:
182
163
@@ -200,27 +181,17 @@ Acum, obiectele care nu au putut fi vizitate pe parcursul procesului sunt consid
Acesta este conceptul de funcționare a colectării reziduurilor.
205
-
206
-
Motoarele limbajului JavaScript aplică numeroase optimizări pentru a-l face să ruleze mai rapid și să nu afecteze execuția.
207
-
=======
208
184
We can also imagine the process as spilling a huge bucket of paint from the roots, that flows through all references and marks all reachable objects. The unmarked ones are then removed.
209
185
210
-
That's the concept of how garbage collection works. JavaScript engines apply many optimizations to make it run faster and not affect the execution.
Acesta este conceptul de funcționare a colectării reziduurilor. Motoarele limbajului JavaScript aplică numeroase optimizări pentru a-l face să ruleze mai rapid și să nu afecteze execuția.
212
187
213
188
Câteva dintre optimizări:
214
189
215
190
-**Colectare generațională** -- obiectele sunt împărțite în două seturi: "cele noi" și "cele vechi". Multe obiecte apar, își fac treaba și mor repede, pot fi curățate agresiv. Cele care supraviețuiesc suficient de mult devin "vechi" și sunt examinate mai rar.
216
191
-**Colectare incrementală** -- dacă există multe obiecte și încercăm să parcurgem simultan întregul set obiect, poate dura mai mult și poate introduce întârzieri vizibile în execuție. Astfel încât, motorul încearcă să împartă în bucăți colectarea reziduurilor. Apoi bucățile sunt executate separat, una câte una. Asta necesită o mai bună contabilitate între ele pentru a urmări modificările, dar avem mai multe întârzieri micuțe în loc de una mare.
217
192
-**Colectare în timp-inactiv** -- colectorul de reziduuri încearcă să ruleze numai în timp ce procesorul este inactiv, pentru a reduce posibilul efect asupra execuției.
Există și alte optimzări și modele ale algoritmilor de colectare a reziduurilor. Oricât de mult mi-ar plăcea să le descriu aici. trebuie să mă abțin, întrucât diferite motoare implementează ajustări și tehnici diferite. Și, ceea ce este și mai important, lucrurile se schimbă pe măsură ce motoarele se dezvoltă, deci aprofundarea "în avans", fără o nevoie reală, probabil că nu merită acest lucru. Cu excepția cazului în care, bineînțeles, este o chestiune de interes pur, atunci vor fi câteva link-uri pentru voi mai jos.
221
-
=======
222
-
There exist other optimizations and flavours of garbage collection algorithms. As much as I'd like to describe them here, I have to hold off, because different engines implement different tweaks and techniques. And, what's even more important, things change as engines develop, so studying deeper "in advance", without a real need is probably not worth that. Unless, of course, it is a matter of pure interest, then there will be some links for you below.
Există și alte optimzări și modele ale algoritmilor de colectare a reziduurilor. Oricât de mult mi-ar plăcea să le descriu aici, trebuie să mă abțin, întrucât diferite motoare implementează ajustări și tehnici diferite. Și, ceea ce este și mai important, lucrurile se schimbă pe măsură ce motoarele se dezvoltă, deci aprofundarea "în avans", fără o nevoie reală probabil că nu merită acest lucru. Cu excepția cazului în care, bineînțeles, este o chestiune de interes pur, atunci vor fi câteva link-uri pentru tine mai jos.
0 commit comments