Как устроена сборка мусора в Golang, Дмитрий Кривенко

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ธ.ค. 2024

ความคิดเห็น • 41

  • @MrYanowski
    @MrYanowski 3 ปีที่แล้ว +54

    По поводу LIFO оговорка. Правильно будет последним пришёл - первым ушёл. Last In, First Out

    • @A1es1
      @A1es1 2 ปีที่แล้ว +7

      тоже завис на этом моменте

    • @ДавидСмыр-к3м
      @ДавидСмыр-к3м ปีที่แล้ว +2

      @@A1es1 я с вами, пх

  • @sadensmol
    @sadensmol ปีที่แล้ว +15

    чем-то мне эта лекция напоминает студенческие годы - когда ты со шпоры все списал - все правильно и хорошо, но как это все работает - ты вообще не понимаешь )

  • @DogLabel
    @DogLabel ปีที่แล้ว +5

    Большое спасибо! Очень доходчиво. За трюк с балластом отдельный плюс❤️

  • @gonchar-da
    @gonchar-da 2 ปีที่แล้ว +4

    Очень много разбирался со сбором мусора и было много непонятных моментов, но почти на все мои вопросы в этом видео я получил ответ
    Дмитрий, больше спасибо!

  • @andreipopov2700
    @andreipopov2700 2 ปีที่แล้ว +5

    Отличное видео для того что бы разобраться с GC в Go новичку (ИМХО лучшее!).
    Для подготовки к собеседованию самое оно. Какие-то прям тонкости и нюансы уже можно добрать с других ресурсов, например статей на хабре. Но по факту и этого одного видео достаточно, что бы отбить все вопросики.
    Большое спасибо Дмитрию и Evrone Dev.

  • @arsnick11
    @arsnick11 3 ปีที่แล้ว +6

    Спасибо. Все подробно и по делу! Ждем новых докладов/видео от Дмитрия!

  • @if_err_not_nil
    @if_err_not_nil 11 หลายเดือนก่อน +1

    Великолепно! Спасибо!

  • @andrewbondaryuk
    @andrewbondaryuk 3 ปีที่แล้ว +9

    Стек не очищается - просто смещается указатель на вершину стека.

  • @olegusov1621
    @olegusov1621 3 ปีที่แล้ว +2

    А откуда сборщик мусора берёт список объектов? При вызове new какая-то информация сохраняется?

  • @deniszzz6744
    @deniszzz6744 3 ปีที่แล้ว +3

    Аллокатор памяти в Go основан на допиленном TCMalloc. Проблема фрагментации памяти больше не проблема.

  • @vitalyisaev2
    @vitalyisaev2 2 ปีที่แล้ว +2

    Почему на 22 слайде включение write barrier и start the world стоят вместе? Вроде бы выше было сказано, что write barrier включается именно при stop the wrold.

    • @Jonatanail
      @Jonatanail ปีที่แล้ว +1

      А в чем несоответствие? Нигде же не говорилось, что write barrier работает только при stop the world. STW нужен только для его включения.

  • @brothers_karamazovs
    @brothers_karamazovs 2 ปีที่แล้ว +3

    Отличный доклад, спасибо!

  • @svfastunov
    @svfastunov 3 ปีที่แล้ว +3

    Про балласт. А как обойти ругню компилятора на неиспользуемую переменную?

    • @NadopbIhnut
      @NadopbIhnut 2 ปีที่แล้ว +7

      _ = make([]byte, 10

  • @Aleksei-k3d
    @Aleksei-k3d ปีที่แล้ว +4

    Очень по верхам, хотелось бы подробнее. Потому что эту информацию можно и в обычной статье прочитать с точно такой же подачей

    • @zoomer0
      @zoomer0 ปีที่แล้ว +1

      Не поверхностно посмотри исходный код в гитхабе

    • @plaintext7288
      @plaintext7288 ปีที่แล้ว +1

      ​@@zoomer0just read the docs, bro 😂😂😂

  • @null6216
    @null6216 3 ปีที่แล้ว +4

    Спасибо за доклад!

  • @PsyMaza
    @PsyMaza ปีที่แล้ว +1

    Разве в го не динамический стек ?

  • @FigisBadralov
    @FigisBadralov 6 หลายเดือนก่อน

    Сколько сегментов в хипе?

  • @TheDavBag
    @TheDavBag 2 ปีที่แล้ว +2

    отличный доклад! в первом публичном представлении казался чуть скучным, но пересмотрев, понравился больше.
    помянул ситимобил :(

  • @Iyozy
    @Iyozy ปีที่แล้ว +2

    Насколько это вообще нормальная идея построить хранилище для большого объема данных на хэш таблицах.
    Получается при каждом запуске GC будет обходить их все и конкурировать с основной программой, что для высоконагруженного сервиса будет катастрофой.
    Решаема ли такая задача в принципе. Может можно как-то спрятать эти таблицы от GC.

  • @abidin592
    @abidin592 ปีที่แล้ว +2

    0:57 стэк первый пришел первый вышел? Нет же, последний первым выходит

    • @alphagroup5147
      @alphagroup5147 2 หลายเดือนก่อน

      Перепутал наверно

  • @TomCat-ox8iu
    @TomCat-ox8iu 2 ปีที่แล้ว +13

    Вы прежде чем других учить прочли бы хоть какую-нибудь базовую книжецу по Go) В первом же примере косяк, т.к обе переменные stackVar и heapVar будут размещены в стеке. Дальше смотреть не стал

  • @milestrifonov
    @milestrifonov 3 ปีที่แล้ว +2

    На слайде со стеком и кучей не совсем понятно, я где-то прочитал и был уверен, что голанг сам решает, где создать переменную, скрывая это от программиста. Насколько я могу быть неправ?

    • @victorstolenets2863
      @victorstolenets2863 3 ปีที่แล้ว +1

      Так и есть, в примере кода на видео stackVar будет убегать в кучу, стек горутин динамический (может менять размер)

    • @ennwy
      @ennwy 2 ปีที่แล้ว +1

      есть определенные правила, по которым компилятор решает, где выделять память, при инициализация переменная проходит некоторые "проверки" и если она не прошла хоть один из так званых тестов, то память аллоцируется на куче, иначе в стеке )

  • @DenisssNovikov
    @DenisssNovikov 3 ปีที่แล้ว +3

    2:30 В С++ есть подход RAII, который позволяет обойтись без ручного высвобождения ресурсов. Если писать код с учётом нескольких простых правил, то в С++ стандартных проблем, - когда забыл вызвать `delete`, - с утечками памяти не возникнет.

    • @olegusov1621
      @olegusov1621 3 ปีที่แล้ว +5

      Удивительно, что умные указатели (работающие по принципу RAII) появились ещё в 11 стандарте (если кто не в курсе 11 он назван в честь года выхода - 2011), а мифы об утечках из-за забытого delete всё ещё всплывают.
      За время работы на плюсах практически не встречал ручного высвобождения ресурсов, только в легаси.

    • @nikhrom3551
      @nikhrom3551 2 ปีที่แล้ว +1

      ​@@olegusov1621 К сожалению, ручное освобождение ресурсов встречается не только в легаси. У многих в голову слишком въелся подход "не платить за то, что не требуется", который они воспринимают через чур строго, и такие люди не собираются разбираться в умных указателях просто потому, что у плюсов есть обычные указатели, которые самые лучшие и самые быстрые на свете (unique_ptr : "Да да, пошёл я нафиг")

  • @artyomecheistov
    @artyomecheistov ปีที่แล้ว +1

    LIFO - ПОСЛЕДНИЙ пришел первый вышел
    Last in first out

  • @Periskis21
    @Periskis21 8 หลายเดือนก่อน

    вебка IA буд то бы сгенерирована

  • @developers-drink-coffee
    @developers-drink-coffee 7 หลายเดือนก่อน +1

    После стека и lifo не стал смотреть дальше

  • @dmitryibaranov6763
    @dmitryibaranov6763 2 ปีที่แล้ว +9

    Куча ошибок ! Текст по листочку. Что за срань ? Если он так и программирует - плакать хочется.

  • @kandidat8134
    @kandidat8134 6 หลายเดือนก่อน

    10

  • @ДмитрийШишов-й7б
    @ДмитрийШишов-й7б 2 ปีที่แล้ว +2

    LIFO - это последний пришел первый вышел

  • @zoomer0
    @zoomer0 ปีที่แล้ว +4

    Чел как будто не готовился к докладу, постоянно ошибки в речи