diff --git a/README.md b/README.md
index 7c463aa..c3ea1e7 100644
--- a/README.md
+++ b/README.md
@@ -66,7 +66,7 @@
- [Мы знаем, что в десятичной системе самое большое число из одной цифры - это 9, а из двух - 99. В бинарной системе самое большое число из двух цифр это 11 (3), самое большое число из трех цифр это 111 (7) и самое большое число из 4 цифр это 1111 (15). Вопрос: каково самое большое число из 8 цифр? (Подсказка: 101-1=9 и 102-1=99)](docs/GOLANG.md#14)
- [Что выведет следующая программа?](docs/GOLANG.md#15)
- [Что выведет следующая программа?](docs/GOLANG.md#16)
- - Как работает Garbage Collection в Go?
+ - [Как работает Garbage Collection в Go?](docs/GOLANG.md#17)
- Что такое interface, как они работают в Go?
- Что такое slice, как устроены и чем отличаются от массивов?
- Что такое len и capacity в slice Go?
diff --git a/docs/GOLANG.md b/docs/GOLANG.md
index e887fb9..51a5403 100644
--- a/docs/GOLANG.md
+++ b/docs/GOLANG.md
@@ -140,7 +140,22 @@ func main() {
### 17.Как работает Garbage Collection в Go?
-`// todo`
+Garbage Collection - это процесс освобождения места в памяти, которое больше не используется. В документации указано следующее:
+```go
+GC выполняется конкурентно (concurrent), одновременно с потоками мутатора (mutator), в точном соответствии с типом (этот принцип также известен как чувствительность к типу), допускается парааллельная выполнение нескольких потоков GC. Это конкурентная пометка и очистка (mark-sweep), при которой используется барьер записи (write barrier). При этом в процессе ничего не генерируется и не сжимается. Освобождение памяти выполняется на основе размера, выделенного для каждой программы Р, чтобы в общем случае минимизировать фрагментацию и избежать блокировок.
+```
+В основе работы GC Go лежит "трехцветный алгоритм". Официальное название "трехцветный алгоритм пометки и очистки". Использует барьер памяти. Главный принцип алгоритма трехцветной пометки и очистки состоит в разделении объектов, находящихся куче, на три набора, в соответствии с "цветом". Условно разделяются на 3 цвета:
+- черные объекты - гарантированно не имеют указателей на белые объекты;
+- серые объекты - могут иметь указатели на белые объекты;
+- белые объекты - на них могут ссылаться некоторые серые объекты и сами некоторые белые объекты могут ссылаться на некоторые черные.
+Краткий алгоритм:
+1. Все объекты сначала белые;
+2. Идет перебор "корневых" объектов, помечаются как серые. Корневые - это объекты к которым можно обращаться напрямую, например глобальные переменные, элементы в стеке и т.д.
+3. Идет перебор серых объектов, проверяются ссылки на другие объекты и помечаются на черные объекты. Если есть ссылка на белый объект, то белый становится серым.
+4. Продолжается до тех пор, пока не будут перебраны все серые объекты.
+5. Оставшиеся после перебора белые объекты считаются недостижимыми и занимаемая ими область памяти может быть освобождена.
+Есть еще Мутатор - это приложение, работающее во время сборки мусора. Вызывает функцию барьера записи. Выполняется каждый раз, когда меняется указатель в куче. После изменения указателя объект считаеться достижимым и помечается как серый.
+
### 18.Что такое interface, как они работают в Go?
`// todo`
### 19.Что такое slice, как устроены и чем отличаются от массивов?