Разбираем Garbage Collector в Java. Михаил Ивашко | SoftTeco Meetup

preview_player
Показать описание
Разбираем Garbage Collector в Java
На митапе от Backend-отдела SoftTeco мы обсудили основные принципы сборки мусора в программировании и критерии выбора Garbage Collector для вашего приложения 🔥
Как изменились сборщики за последние 25 лет? Проследим за эволюцией 😉

👨🏻‍💻 Спикер — Михаил Ивашко, Java Developer SoftTeco

#GarbageCollector #Backend #Java #SoftTecoTeam #softtecoteam

ТАЙМКОДЫ
0:47 Что будем разбирать на митапе
1:04 Что такое мусор?
2:12 Языки с ручным управлением памятью
2:50 Garbage Collector - современное решение
6:37 Эволюция сборщиков в JAVA
8:05 Epsilon GG
9:17 Serial GC
12:41 Parallel GC
14:11 CMS GC
17:25 Garbage First GC
21:49 ZGC
29:07 Shenandoah GC
33:15 Есть ли разделение сборщиков для малых и больших объектов?

—-————-————-————-————-———
Заходи в наши соцсети!

Рекомендации по теме
Комментарии
Автор

Отличная лекция! Отдельный лайк за молитву сборщика мусора

antonstezhkin
Автор

Парень ты на своём месте. Благодарю за лекцию. Понимать и уметь рассказать это ещё найти нужно.

ЛюдмилаИвашкевич-го
Автор

Ёмко, четко, конкретно и без воды! 👍
Приятно воспринимать хорошую дикцию🔥
Спасибо за информацию!

Натали-ызн
Автор

Спасибо за доклад. Очень интересно и информативно=)

MiracleMasterpiece
Автор

Спасибо Михаилу, тот момент когда и не заметил как пролетело время, шикарно объясняешь!

alexandrchap
Автор

Неверагодная лекцыя! Паўтарыў увесь матэр'ял)

artemzakharov
Автор

Важное уточнение: сборщик мусора можно вызвать (грубо говоря попросить), но JVM не гарантирует, что выполнит команду сборки

JeckPot
Автор

Супер, побольше бы такого! Давайте теперь о модель java? Про всякие там happens before

maximisaev
Автор

Серия статей с хабра "Дюк, вынеси мусор" в видеоформате)
ну спасибо, получается

ДевятыйДан
Автор

Классный обзорный доклад на тему GC, даже не смотря, что это выжимка со статей "Дюк, вынеси мусор" с Хабра. Стало как-то проще их читать уже после прослушивания доклада.

xtenzq
Автор

Нелья принудительно вызвать сборку мусора. System.gc() не вызывает сборку, а рекомендует JVM ее выполнить, но JVM не обязана это делать.

CMS никогда не был сборщиком мусора по умолчанию, насколько мне известно. Использовался Parallel GC.

Про G1. Общее количество регионов в куче равно размеру кучи, деленному на размер региона. Например, если размер кучи составляет 4GB, а размер каждого региона - 4MB, то количество регионов будет равно 1000. То есть 2048 JVM не гарантирует. 2048 это скорее рекомендация Java, настроить таким образом, чтобы получилось столько регионов, чтобы G1 работал более эффективно. И не совсем корректно было сказано про большие объекты: под большой объект (объект, размер которого, больше, чем размер региона), выделяется несколько смежных регионов.

Про ZGC. "Также ZGC использует такую необычную вещь как барьер." Вроде как все GC используют барьеры.

struchkovdev
Автор

Сперва восхитился докладчиком, что он с такой сложной темой разобрался сам и нам предоставил систематизированную инфу, потом понял, что это просто пересказ серии статей с Хабра…

КириллКириллов-пв
Автор

Спасибо за доклад! Не понял только почему наличие одного ядра подразумевает однопоточность. ОС легко может переключать треды на одном ядре.

ilyaafanasyev
Автор

Появилось ощущение, что это пересказ серии статей на хабре "Дюк, вынеси мусор". Советую почитать сперва ее

КириллКириллов-вд
Автор

Откуда инфа про то, что ZGC хотели сделать платным? Я вот не могу найти ни одного упоминания этого в гугле, chatgpt тоже не в курсе.

mrdarkilya
Автор

хорошая лекция, но жаль не затронут момент почему сюрвайворов 2; у g1 бы поподробнее про вспомогательные структуры (set с объектами, rset) и барьеры

СергейСоловьев-тву
Автор

А что насчет сборки мусора в контейнерах?

djbob
Автор

Фамилия Трахтенберг никак не сочетается с ПРом )

vitalyglushchenko
Автор

> "Ручное управление в памятью как в Rust."
Года идут, а люди всё ничего кроме того доклада прожённого плюсовика, который наврал с три короба, не слышали.
Таким ходом мысли в джаве тогда тоже ручное упровление памятью. Чтобы очистить память от мусора, нужно выключить сервер с джавой на борту.
> "Сложно найти утечку памяти в GC языке."
Мдам, прям синьор-помидор докладывает. Я могу тебе хоть тысячу примеров с утечкой памяти привести. GC нужен не для избежания утечек памяти, а других ошибок с работой памяти. Утечки могут очень долго копиться и ты даже не заметишь.

rumisbadforyou
Автор

Вызов GC не гарантирует его исполнение

leodev