Работа программиста немыслима без взаимодействия с памятью. Мы с легкостью создаем переменные и манипулируем ссылками на различные объекты в куче. И далеко не всегда задумываемся о том, какие задачи приходится решать разработчикам языков и рантаймов, чтобы выделение и освобождение памяти происходило быстро и эффективно. Чтобы разобраться в теме, мы позвали в гости Алексея Шипилёва из Red Hat, который уже более 10 лет занимается вопросами производительности Java. В настоящее время Алексей разрабатывает реализацию сборщика мусора в OpenJDK, и с темой менеджмента памяти он знаком не понаслышке.
Выпуск получился достаточно хардкорным и крайне насыщенным. А еще мы разрушили миф о том, что ARC не имеет никакого отношения к GC.

Поддержи лучший подкаст про мобильную разработку:
www.patreon.com/podlodka

Также ждем вас, ваши лайки, репосты и комменты в мессенджерах и соцсетях!

Telegram-чат: https://t.me/podlodka
Telegram-канал: https://t.me/podlodkanews
Страница в Facebook: www.facebook.com/podlodkacast/
Twitter-аккаунт: https://twitter.com/PodlodkaPodcast

Содержание:
- 00:00:38 - Знакомство с гостем
- 00:02:19 - Что такое память в программировании
- 00:06:28 - Про computer science
- 00:07:17 - Управление сложностью процессов
- 00:09:54 - Высокоуровневые языки программирования
- 00:13:44 - Про ассемблер и пузырьковую сортировку
- 00:16:49 - Ручной менеджмент памяти
- 00:25:36 - Слабая гипотеза о поколениях
- 00:29:26 - Автоматический менеджмент памяти
- 00:32:09 - Reference counting
- 00:39:37 - Reference counting и циклические ссылки
- 00:48:00 - Трассирующие сборщики мусора
- 01:00:46 - Concurrent-коллекторы
- 01:06:26 - Как создатели языков выбирают менеджер памяти?
- 01:11:17 - Как выбрать GC
- 01:17:45 - Как правильно программировать, зная свой GC
- 01:22:32 - LRU-кэш и GC
- 01:27:59 - Про производительность и бизнес-логику
- 01:33:05 - Будни разработчика GC
- 01:41:35 - Как стать разработчиком GC
- 01:47:44 - Подведение черты
- 01:48:41 - Вопрос почти Стасу

Полезные ссылки:
- Talks:
https://shipilev.net/#shenandoah
- The Garbage Collection Handbook:
http://gchandbook.org/
- Shenandoah GC:
https://wiki.openjdk.java.net/display/shenandoah/Main
- ZGC:
http://openjdk.java.net/jeps/333
- Epsilon GC:
http://openjdk.java.net/jeps/318
- “JVM Anatomy Park: TLAB Allocation”:
https://shipilev.net/jvm-anatomy-park/4-tlab-allocation/
- “JVM Anatomy Park: GC Design And Pauses”
https://shipilev.net/jvm-anatomy-park/3-gc-design-and-pauses/
- “JVM Anatomy Park: Moving GC And Locality”
https://shipilev.net/jvm-anatomy-park/11-moving-gc-locality/
- “Логика неизбежности”:
https://lex-kravetski.livejournal.com/301063.html
- “Dismissing Python Garbage Collection”
https://instagram-engineering.com/dismissing-python-garbage-collection-at-instagram-4dca40b29172
- Swift: “App crash with memory corruption on property set”
https://bugs.swift.org/browse/SR-8101
https://twitter.com/virlof/status/1011303236395941890

Twitter Mentions