Работа программиста немыслима без взаимодействия с памятью. Мы с легкостью создаем переменные и манипулируем ссылками на различные объекты в куче. И далеко не всегда задумываемся о том, какие задачи приходится решать разработчикам языков и рантаймов, чтобы выделение и освобождение памяти происходило быстро и эффективно. Чтобы разобраться в теме, мы позвали в гости Алексея Шипилёва из 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
Плейлист
Podlodka Podcast
Инженерная культура компании пронизывает нашу работу от и до. Какими критериями бизнес руководствуется при найме и почему собеседования устроены именно так а не иначе? Сколько времени у вас уйдет на...
В выпуске мы придумали идеальное описание языка программирования Zig – это DSL для машинного кода. И за этим определением кроется куча интересных концепций, начиная от брутальной простоты в синтаксисе...
С Сашей Зиминым поговорили про его опыт работы и жизни в Британии. В начале как наемного сотрудника, а теперь уже как исключительного таланта. В релокационном выпуске традиционно прошлись по климату,...
В некоторых выпусках мы уже обсуждали, как работы ученых и инженеров в 60-70-е годы повлияли на современное программирование. Сейчас мы пошли еще дальше! Вместе с Виталием Брагилевским обсуждаем выдаю...
Дата и время – не самый простой домен. То зимнее-летнее время, то часовые пояса не кратны часу. А что, если не надо привязываться к часовому поясу? Еще в чате распределенной команды написали, что мити...
Все ведущие подкаста недавно релоцировались в другие страны. А некоторые – даже несколько раз. Мы по себе знаем, насколько сложен процесс адаптации, и насколько просто вместо интеграции в новую культу...
FemTech — технологии, которые улучшают жизнь и здоровье женщин. Если вы думаете, что дело заканчивается трекерами цикла… То, поверьте, этот выпуск вас удивит! Gender data gap — огромная и далеко не ед...
Продолжаем разбираться, за что отвечают разные C-level менеджеры, и в этот раз фокус на деньгах – говорим про CFO. Готовьте кошельки!
Поговорили про финансирование, планирование, управление рисками –...
Мы уже несколько выпусков посвятили тому, как правильно “готовить” тесты — составлять тест-кейсы, реализовывать и оптимизировать автотесты, поддерживать тестовую документацию. Но один вопрос остается...
Результат работы программистов – код. Дизайнеров – макеты и красивые иконки. А вот с тестировщиками все намного интереснее! Вместе с Анастасией Заречневой, тестировщицей из JetBrains и создательницей...
В выпуске обсудили нескучные правила шахмат, а также разновидности шахмат. Рассмотрели шахматы как вид спорта, или даже киберспорта. Узнали как AI играет в шахматы, оценивает силу ходов, помогает сове...
И стартап, и пет-проект проще начинать с кем-то, например, другом или родственником. Сначала вы просто делаете что-то прикольное, но с ростом проекта растут и ставки. Как не навредить проекту и сохран...
Мы много времени уделяем обсуждению того, как писать код классно — спорим про технологии, языки, фреймворки, IDE и т. п. При этом все мы знаем, что реализация фичи — это лишь верхушка айсберга. А что...
Мало кого из тех, кто становится тимлидом, жизнь как-то к этому готовила. Управлению людьми и командами редко учат в университетах, работа рядовым программистом тоже не приносит нужных знаний. Мы реши...
У нас уже был выпуск про VR, потому мы обсудили, что произошло с индустрией за прошедшие годы. В центральной части выпуска подняли тему NeRF — технологии, которая позволяет делать фотореалистичные сни...
Иногда технологии — это не только про сложные инженерные задачи, но и про непростые моральные и этические вопросы без правильных ответов. В этом выпуске обсуждаем с Александром Нотченко дипфейки — как...
Скорее включайте этот новогодний эпизод и заряжайтесь хорошим настроением! Обсуждаем любимые выпуски по версии наших слушателей и нас самих, делимся открытиями и фейлами 2023 года, неловко шутим и, ко...
Изначально мы планировали говорить о QT исключительно в контексте кроссплатформенной десктопной разработки. Но в процессе осознали, что такое представление слишком ограничено, и возможности QT гораздо...
Возможно, вы знаете, что все ведущие нашего подкаста неровно дышат к Kotlin. Почему? Чем так хорош этот язык? Разбираемся со Светой Исаковой, Developer Advocate в JetBrains.
Облако КРОК – надежная и...
Часто карьерную лестницу технических менеджеров представляют исключительно через количественный рост в зоне ответственности, горизонте планирования и числе людей. Почему это не так и в чем есть качест...
В этом выпуске Катя Петрова рассказала про особенности переезда, легализации и жизни на острове глазами человека из IT. Прошлись по всем аспектам, которые могут повлиять на ваш выбор: климат, жилье, ш...
В какой момент продукт перестает быть безумной идеей фаундеров и встает на ноги? По каким метрикам и что нужно сделать, чтобы пройти этот путь? На эти и другие вопросы нам ответил Илья Мартын – управл...
У TypeScript – очень интересная история. Это первый крупный опенсорсный проект Microsoft, которые до этого воспринимались исключительно как империя зла. Он соревновался сразу с несколькими другими язы...
Пополняем коллекцию выпусков про профессии! В этот раз мы вместе с Владиславом Соловьевым разобрались в том, что такое motion design.
А там есть в чем поразбираться, ведь моушн-дизайн включает в себя...
Стартуем серию выпусков посвященных десктоп разработке, и первый на очереди великий и ужасный… Electron! Вместе с Ильей Ермошиным разобрались в устройстве фреймворка, сравнивали его с нативной разраб...
Представьте, что можно взять свой любимый язык программирования, а внутри него сделать другой язык, который будет понятными словами описывать вашу предметную область. А нам и представлять не надо, мы...
Преобразования, которые происходят с текстом для его отображения на экране – одна из самых проклятых вещей в программировании. Никита Прокопов вернулся к нам в гости, чтобы рассказать про то, какие ин...
Юмор – это то, что помогает налаживать социальные связи, справляться со стрессом и трудностями жизни. Поэтому особенно интересно заглянуть в мир стендапа, где юмор – это профессиональный навык. Разбир...
ИТ-рекрутмент знаком нам всем — как соискателям работы. Но мало кто представляет, что скрывается за завлекающими сообщениями рекрутеров в соц. сетях, ведь это лишь маленькая верхушка айсберга. Как зар...
There is no such thing as a plain text. Мы позвали в гости Никиту Прокопова, автора Fira Code, и разработчика сразу нескольких UI фреймворков, чтобы поговорить о том, как компьютеры работают с текстом...