Skip to content

Commit 7a0dc51

Browse files
committed
minor fixes
1 parent ef4c30d commit 7a0dc51

File tree

1 file changed

+11
-11
lines changed
  • 1-js/04-object-basics/03-garbage-collection

1 file changed

+11
-11
lines changed

1-js/04-object-basics/03-garbage-collection/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ family = null;
145145

146146
Объекты John и Ann всё ещё связаны, оба имеют входящие ссылки, но этого недостаточно.
147147

148-
Бывший объект `family` был отсоединён от корня, на него больше нет ссылки, поэтому весь "остров" становится недоступным и будет удалён.
148+
Бывший объект `family` был отсоединён от корня, на него больше нет ссылки, поэтому весь "остров" становится недостижимым и будет удалён.
149149

150150
## Внутренние алгоритмы
151151

@@ -163,17 +163,17 @@ family = null;
163163

164164
![](garbage-collection-1.svg)
165165

166-
Мы ясно видим "недостижимый остров" справа. Теперь давайте посмотрим, как будет работать "разметка и зачистка" сборщика мусора.
166+
Мы ясно видим "недостижимый остров" справа. Теперь давайте посмотрим, как будет работать "алгоритм пометок" сборщика мусора.
167167

168168
На первом шаге помечаются корни:
169169

170170
![](garbage-collection-2.svg)
171171

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

174174
![](garbage-collection-3.svg)
175175

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

178178
![](garbage-collection-4.svg)
179179

@@ -183,27 +183,27 @@ family = null;
183183

184184
Мы также можем представить себе этот процесс как выливание огромного ведра краски из корней, которая течёт по всем ссылкам и отмечает все достижимые объекты. Затем непомеченные удаляются.
185185

186-
Это концепция того, как работает сборка мусора. Движки JavaScript применяют множество оптимизаций, чтобы он работал быстрее и не влиял на выполнение.
186+
Это концепция того, как работает сборка мусора. Движки JavaScript применяют множество оптимизаций, чтобы она работала быстрее и не задерживала выполнение кода.
187187

188188
Вот некоторые из оптимизаций:
189189

190-
- **Сборка по поколениям (Generational collection)** – объекты разделены на два набора: "новые" и "старые". Многие объекты появляются, выполняют свою работу и быстро умирают, их можно агрессивно очищать. Те, которые выживают достаточно долго, становятся "старыми" и проверяются реже.
191-
- **Инкрементальная сборка (Incremental collection)** – если объектов много, и мы пытаемся обойти и пометить весь набор объектов сразу, это может занять некоторое время и привести к видимым задержкам в выполнения скрипта. Таким образом, движок пытается разделить сборку мусора на части. Затем части выполняются одна за другой, по отдельности. Это требует дополнительного учёта для отслеживания изменений между частями, но у нас много крошечных задержек вместо одной большой.
190+
- **Сборка по поколениям (Generational collection)** – объекты делятся на два набора: "новые" и "старые". В типичном коде многие объекты имеют короткую жизнь: они появляются, выполняют свою работу и быстро умирают, так что имеет смысл отслеживать новые объекты и, если это так, быстро очищать от них память. Те, которые выживают достаточно долго, становятся "старыми" и проверяются реже.
191+
- **Инкрементальная сборка (Incremental collection)** – если объектов много, и мы пытаемся обойти и пометить весь набор объектов сразу, это может занять некоторое время и привести к видимым задержкам в выполнения скрипта. Так что движок делит всё множество объектов на части, и далее очищает их одну за другой. Получается несколько небольших сборок мусора вместо одной всеобщей. Это требует дополнительного учёта для отслеживания изменений между частями, но зато получается много крошечных задержек вместо одной большой.
192192
- **Сборка в свободное время (Idle-time collection)** - чтобы уменьшить возможное влияние на производительность, сборщик мусора старается работать только во время простоя процессора.
193193

194-
Существуют и другие способы оптимизации и разновидности алгоритмов сборки мусора. Но как бы мне ни хотелось описать их здесь, я должен воздержаться, потому что разные движки реализуют разные хитрости и методы. И, что ещё более важно, все меняется по мере развития движков, поэтому изучать глубже "заранее", без реальной необходимости, вероятно, не стоит. Если, конечно, это не вопрос чистого интереса, то для вас будет несколько ссылок ниже.
194+
Существуют и другие способы оптимизации и разновидности алгоритмов сборки мусора. Но как бы мне ни хотелось описать их здесь, я должен воздержаться, потому что разные движки реализуют разные хитрости и методы. И, что ещё более важно, все меняется по мере развития движков, поэтому изучать тему глубоко "заранее", без реальной необходимости, вероятно, не стоит. Если, конечно, это не вопрос чистого интереса, тогда для вас будет несколько ссылок ниже.
195195

196196
## Итого
197197

198198
Главное, что нужно знать:
199199

200200
- Сборка мусора выполняется автоматически. Мы не можем ускорить или предотвратить её.
201201
- Объекты сохраняются в памяти, пока они достижимы.
202-
- Наличие ссылки - это не то же самое, что быть достижимым (из корня): свора взаимосвязанных объектов может стать недоступна в целом.
202+
- Если на объект есть ссылка - вовсе не факт, что он является достижимым (из корня): набор взаимосвязанных объектов может стать недоступен в целом, как мы видели в примере выше.
203203

204-
Современные движки реализуют передовые алгоритмы сборки мусора.
204+
Современные движки реализуют разные продвинутые алгоритмы сборки мусора.
205205

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 и др.).
207207

208208
Если вы знакомы с низкоуровневым программированием, то более подробная информация о сборщике мусора V8 находится в статье [A tour of V8: Garbage Collection](http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection).
209209

0 commit comments

Comments
 (0)