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
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/03-garbage-collection/article.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -145,7 +145,7 @@ family = null;
145
145
146
146
Объекты John и Ann всё ещё связаны, оба имеют входящие ссылки, но этого недостаточно.
147
147
148
-
Бывший объект `family` был отсоединён от корня, на него больше нет ссылки, поэтому весь "остров" становится недоступным и будет удалён.
148
+
Бывший объект `family` был отсоединён от корня, на него больше нет ссылки, поэтому весь "остров" становится недостижимым и будет удалён.
149
149
150
150
## Внутренние алгоритмы
151
151
@@ -163,17 +163,17 @@ family = null;
163
163
164
164

165
165
166
-
Мы ясно видим "недостижимый остров" справа. Теперь давайте посмотрим, как будет работать "разметка и зачистка" сборщика мусора.
166
+
Мы ясно видим "недостижимый остров" справа. Теперь давайте посмотрим, как будет работать "алгоритм пометок" сборщика мусора.
167
167
168
168
На первом шаге помечаются корни:
169
169
170
170

171
171
172
-
Затем помечаются их ссылки:
172
+
Затем помечаются объекты по их ссылкам:
173
173
174
174

175
175
176
-
...И их ссылки, пока это вообще возможно:
176
+
...А затем объекты по их ссылкам и так далее, пока это возможно:
177
177
178
178

179
179
@@ -183,27 +183,27 @@ family = null;
183
183
184
184
Мы также можем представить себе этот процесс как выливание огромного ведра краски из корней, которая течёт по всем ссылкам и отмечает все достижимые объекты. Затем непомеченные удаляются.
185
185
186
-
Это концепция того, как работает сборка мусора. Движки JavaScript применяют множество оптимизаций, чтобы он работал быстрее и не влиял на выполнение.
186
+
Это концепция того, как работает сборка мусора. Движки JavaScript применяют множество оптимизаций, чтобы она работала быстрее и не задерживала выполнение кода.
187
187
188
188
Вот некоторые из оптимизаций:
189
189
190
-
-**Сборка по поколениям (Generational collection)** – объекты разделены на два набора: "новые" и "старые". Многие объекты появляются, выполняют свою работу и быстро умирают, их можно агрессивно очищать. Те, которые выживают достаточно долго, становятся "старыми" и проверяются реже.
191
-
-**Инкрементальная сборка (Incremental collection)** – если объектов много, и мы пытаемся обойти и пометить весь набор объектов сразу, это может занять некоторое время и привести к видимым задержкам в выполнения скрипта. Таким образом, движок пытается разделить сборку мусора на части. Затем части выполняются одна за другой, по отдельности. Это требует дополнительного учёта для отслеживания изменений между частями, но у нас много крошечных задержек вместо одной большой.
190
+
-**Сборка по поколениям (Generational collection)** – объекты делятся на два набора: "новые" и "старые". В типичном коде многие объекты имеют короткую жизнь: они появляются, выполняют свою работу и быстро умирают, так что имеет смысл отслеживать новые объекты и, если это так, быстро очищать от них память. Те, которые выживают достаточно долго, становятся "старыми" и проверяются реже.
191
+
-**Инкрементальная сборка (Incremental collection)** – если объектов много, и мы пытаемся обойти и пометить весь набор объектов сразу, это может занять некоторое время и привести к видимым задержкам в выполнения скрипта. Так что движок делит всё множество объектов на части, и далее очищает их одну за другой. Получается несколько небольших сборок мусора вместо одной всеобщей. Это требует дополнительного учёта для отслеживания изменений между частями, но зато получается много крошечных задержек вместо одной большой.
192
192
-**Сборка в свободное время (Idle-time collection)** - чтобы уменьшить возможное влияние на производительность, сборщик мусора старается работать только во время простоя процессора.
193
193
194
-
Существуют и другие способы оптимизации и разновидности алгоритмов сборки мусора. Но как бы мне ни хотелось описать их здесь, я должен воздержаться, потому что разные движки реализуют разные хитрости и методы. И, что ещё более важно, все меняется по мере развития движков, поэтому изучать глубже "заранее", без реальной необходимости, вероятно, не стоит. Если, конечно, это не вопрос чистого интереса, то для вас будет несколько ссылок ниже.
194
+
Существуют и другие способы оптимизации и разновидности алгоритмов сборки мусора. Но как бы мне ни хотелось описать их здесь, я должен воздержаться, потому что разные движки реализуют разные хитрости и методы. И, что ещё более важно, все меняется по мере развития движков, поэтому изучать тему глубоко "заранее", без реальной необходимости, вероятно, не стоит. Если, конечно, это не вопрос чистого интереса, тогда для вас будет несколько ссылок ниже.
195
195
196
196
## Итого
197
197
198
198
Главное, что нужно знать:
199
199
200
200
- Сборка мусора выполняется автоматически. Мы не можем ускорить или предотвратить её.
201
201
- Объекты сохраняются в памяти, пока они достижимы.
202
-
-Наличие ссылки - это не то же самое, что быть достижимым (из корня): свора взаимосвязанных объектов может стать недоступна в целом.
202
+
-Если на объект есть ссылка - вовсе не факт, что он является достижимым (из корня): набор взаимосвязанных объектов может стать недоступен в целом, как мы видели в примере выше.
203
203
204
-
Современные движки реализуют передовые алгоритмы сборки мусора.
204
+
Современные движки реализуют разные продвинутые алгоритмы сборки мусора.
205
205
206
-
Общие сведения о некоторых из них освещены в книге "The Garbage Collection Handbook: The Art of Automatic Memory Management" (R. Jones и др.).
206
+
О многих из них рассказано в прекрасной книге о сборке мусора "The Garbage Collection Handbook: The Art of Automatic Memory Management" (R. Jones и др.).
207
207
208
208
Если вы знакомы с низкоуровневым программированием, то более подробная информация о сборщике мусора V8 находится в статье [A tour of V8: Garbage Collection](http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection).
0 commit comments