Skip to content

Commit a5799a1

Browse files
committed
feat(1-04-object-basics): Fix language mistakes in 03-garbage-collection
1 parent 3ed4ac1 commit a5799a1

File tree

1 file changed

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

1 file changed

+8
-8
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
Простіше кажучи, "досяжні" значення -- це ті, які якимось чином доступні або придатні для використання. Вони гарантовано зберігаються в пам’яті.
1212

13-
1. Існує базовий набір досяжних за своєю суттю значень, які неможливо видалити із зрозумілих причин.
13+
1. Існує базовий набір досяжних за своєю суттю значень, які неможливо видалити зі зрозумілих причин.
1414

1515
Наприклад:
1616

@@ -50,7 +50,7 @@ user = null;
5050

5151
![](memory-user-john-lost.svg)
5252

53-
Тепер Іван стає недосяжним. Немає доступу до нього, немає посилань на нього. Процес збирання сміття видалить дані і звільнить пам’ять.
53+
Тепер Іван стає недосяжним. Немає доступу до нього, немає посилань на нього. Процес збирання сміття видалить дані та звільнить пам’ять.
5454

5555
## Два посилання
5656

@@ -78,7 +78,7 @@ user = null;
7878

7979
## Взаємозв’язані об’єкти
8080

81-
Тепер більш складний приклад. Сім’я:
81+
Тепер складніший приклад. Сім’я:
8282

8383
```js
8484
function marry(man, woman) {
@@ -163,7 +163,7 @@ family = null;
163163

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

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

168168
Перший крок позначає корені:
169169

@@ -177,7 +177,7 @@ family = null;
177177

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

180-
Тепер об’єкти, які не вдалося відвідати в процесі, вважаються недосяжними і будуть видалені:
180+
Тепер об’єкти, які не вдалося відвідати в процесі, вважаються недосяжними та будуть видалені:
181181

182182
![](garbage-collection-5.svg)
183183

@@ -189,9 +189,9 @@ family = null;
189189

190190
- **Збірка поколінь (Generational collection)** -- об’єкти поділяються на два набори: "нові" та "старі". Багато об'єктів мають короткий термін служби, вони з’являються, виконують свою роботу і швидко стають непотрібними. Тому має сенс відстежувати нові об’єкти та очищати від них пам’ять, якщо це так. Ті, що використовуються досить довго, стають "старими" і оглядаються рідше.
191191
- **Інкрементний збір (Incremental collection)** -- якщо об’єктів багато, і ми намагаємось пройтися і позначити весь набір об’єктів одночасно, це може зайняти деякий час і ввести видимі затримки у виконанні. Тому рушій намагається розділити збирання сміття на частини. Потім частини виконуються по одній, окремо. Таким чином відбувається багато дрібних зборів сміття замість одного великого. Це вимагає додаткового обліку між ними для відстеження змін, але ми маємо багато маленьких затримок замість однієї великої.
192-
- **Збір під час простою (Idle-time collection)** -- завзвичай збирання сміття працює лише під час простою процесора, щоб зменшити можливий вплив на виконання.
192+
- **Збір під час простою (Idle-time collection)** -- зазвичай збирання сміття працює лише під час простою процесора, щоб зменшити можливий вплив на виконання.
193193

194-
Існують й інші оптимізації та варіанти алгоритмів збирання сміття. Але як би нам не хотілося описати їх тут, ми повинні утриматися від цього, тому що різні інтерпретатори JavaScript застосовують різні прийоми і хитрощі. І, що ще важливіше, все змінюється в міру розвитку інтерпретаторів, тому глибше вивчення "заздалегідь" без реальної потреби, ймовірно, не варто того. Якщо, звичайно, це не питання чистого інтересу, нижче для вас будуть деякі посилання.
194+
Існують й інші оптимізації та варіанти алгоритмів збирання сміття. Але як би нам не хотілося описати їх тут, ми повинні утриматися від цього, тому що різні інтерпретатори JavaScript застосовують різні прийоми та хитрощі. І, що ще важливіше, все змінюється в міру розвитку інтерпретаторів, тому глибше вивчення "заздалегідь" без реальної потреби, ймовірно, не варто того. Якщо, звичайно, це не питання чистого інтересу, нижче для вас будуть деякі посилання.
195195

196196
## Підсумки
197197

@@ -207,6 +207,6 @@ family = null;
207207

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

210-
[V8 blog](https://v8.dev/) також час від часу публікує статті про зміни в управлінні пам’яттю. Зрозуміло, вам необхідно розуміти, як влаштований всередині рущія V8 в цілому. Про це ви можете прочитати у блозі [Вячеслава Єгорова](https://mrale.ph) який працював одним з інженерів V8. Я кажу: "V8", тому що він найкраще висвітлений статтями в Інтернеті. Для інших інтерпретаторів деякі підходи схожі, але збирання сміття відрізняється в багатьох аспектах.
210+
[V8 blog](https://v8.dev/) також час від часу публікує статті про зміни в управлінні пам’яттю. Зрозуміло, вам необхідно розуміти, як влаштований всередині рушія V8 в цілому. Про це ви можете прочитати у блозі [Вячеслава Єгорова](https://mrale.ph) який працював одним з інженерів V8. Я кажу: "V8", тому що він найкраще висвітлений статтями в Інтернеті. Для інших інтерпретаторів деякі підходи схожі, але збирання сміття відрізняється в багатьох аспектах.
211211

212212
Глибоке розуміння роботи інтерпретаторів необхідно, коли вам потрібні низькорівневі оптимізації. Було б розумно планувати їх вивчення тільки як наступний крок після вивчення мови JavaScript.

0 commit comments

Comments
 (0)