Как работает Garbage Collector или сборщик мусора?

Sdílet
Vložit
  • čas přidán 28. 08. 2024

Komentáře • 30

  • @KitGorn
    @KitGorn Před 2 lety +16

    Как по мне, рассказано довольно поверхностно, но если все рассказывать, то хронометраж у видео сильно увеличится. Но, думаю есть важные аспекты. Есть, насколько я знаю, две кучи. Куча для мелких обьектов где три поколения и для крупных(не помню от скольки они должны весить, чтобы попадать туда). Крупные сразу считаются долгоживущими и очищаются редко, как второе поколение. При очистке останавливаеться все приложение и после удаления обьектов происходит дефрагментация, потому очистку нельзя производить постоянно. А так круто, что рассказал, что в юньке GC работает по другому. Я этого не знал. Пойду изучать документацию юнити.

    • @gamedevlavka
      @gamedevlavka  Před 2 lety +10

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

  • @psy_gamer
    @psy_gamer Před 2 lety +5

    Было бы неплохо послушать про Zenject и все что с ним связано, как через контейнер создавать нормально объекты, удалять их, про сигналы и прочее.

  • @misenikolai9032
    @misenikolai9032 Před 2 lety +9

    Страшная двоечка) все мы понимаем почему она страшная. Спасибо за урок

  • @sklyanskiy
    @sklyanskiy Před 2 lety +14

    Да... Насколько же я сошёл с ума после начала всего этого гавна, что мне показалось, что на 7:43 это не двоечка, а буква зет... Сколько же ещё времени надо, чтобы перестать слышать в каждом звуке сирену, а в каждой каракули полусвастику.
    Пасиб тебе за качественную инфу, так очень приятно слушать. Углубил знания, так сказать)

  • @user-pc2dg3bs6t
    @user-pc2dg3bs6t Před měsícem +1

    Сначала до релиза надо дожить, потом код оптимизировать 😅

  • @grigory.yanshin
    @grigory.yanshin Před 2 lety +3

    С возвращением

  • @user-we6si4mi3x
    @user-we6si4mi3x Před rokem +1

    Спасибо за урок!!

  • @vitaliySobakinson
    @vitaliySobakinson Před 2 lety +3

    Привет! Отличное видео, спасибо за него! Инфа о GC, вероятно, важная, но хотелось бы знать как это знание применить. Теория без практики - деньги на ветер :)

    • @gamedevlavka
      @gamedevlavka  Před 2 lety +4

      Хороший поинт! В конце я говорю зачем это знание, но, видимо, слабый акцент на этом.
      Знание о том, что такое GC и как он работает, нужны для того, чтобы лучше оценивать, как писать код, и почему. Например большие данные - кэшировать, чтобы они жили долго и счастливо, и не создавали ситуаций, когда требуется очистка памяти. Вот он созданы и живут.
      Если что-то создаётся очень часто, например каждый кадр - лучше использовать пул, в случае с игровыми объектами, или структуры, в случае со скриптовыми. То есть мы используем пул объектов именно для того, чтобы минимизировать работу GC, который может создать лаг при очистке памяти. А не просто "чтобы не лагало".

  • @Fenix72rus
    @Fenix72rus Před 2 lety +1

    Ура. Спасибо за видео.

  • @def6141
    @def6141 Před 2 lety +1

    Спасибо! Узнал что-то новое 👍

  • @guysniceview1703
    @guysniceview1703 Před 2 lety +1

    Спасибо за видео))

  • @nepochat
    @nepochat Před 2 lety +1

    Спасибо, узнал что-то новое)

  • @rdragon587
    @rdragon587 Před 2 lety +1

    Thanks) По моему инкрементальный GC просто вызывается намного чаще и этим достигается меньшая нагрузка на кадр

    • @gamedevlavka
      @gamedevlavka  Před 2 lety +2

      Документация гласит, что именно процесс сборки распределяется по нескольким кадрам:
      docs.unity3d.com/Manual/performance-incremental-garbage-collection.html

    • @rdragon587
      @rdragon587 Před 2 lety

      @@gamedevlavka да, точно

  • @GERGONable
    @GERGONable Před 2 lety +2

    Если в видео звучит фраза «я не знаю» то завем вообще записывать это видео

  • @chezadebil1900
    @chezadebil1900 Před 2 lety +1

    то есть если в юньке не включен gc, то память вообще не очищается?

    • @gamedevlavka
      @gamedevlavka  Před 2 lety

      Его можно отключить только через скрипт. И да, если полностью отключить, то помять не будет очищаться. Можно отключить даже ручную очистку. Видимо, бывают ситуации, когда это надо, но я не сталкивался.

  • @sinlessdevil5970
    @sinlessdevil5970 Před 2 lety

    Расскажешь про Navigation mesh ? Интерсно что думаешь .

    • @gamedevlavka
      @gamedevlavka  Před 2 lety +1

      Расскажу, но не в ближайшее время. Мне не очень нравится, что в юнити он по прежнему сыроват. Поэтому под настроение :)

    • @sinlessdevil5970
      @sinlessdevil5970 Před 2 lety

      @@gamedevlavka понял , cпасибо за ответ )

  • @unityrututorials1327
    @unityrututorials1327 Před rokem

    у меня для Webgl unity 2021 GC вообще серая и с поставленной галкой по умолчанию/ снять нет возможности

  • @macewite
    @macewite Před 2 lety

    разве поколения придумали в майкрософте?

    • @gamedevlavka
      @gamedevlavka  Před 2 lety

      Честно признаюсь, не знаю, кто придумал поколения. Они появились не одновременно со сборщиком мусора, так что хз. Но это я говорил, что называется, к слову - мол, как это все происходит в C#

    • @macewite
      @macewite Před 2 lety

      @@gamedevlavka c# это ответ мелкомягких на жаву в которой сборка с поколениями и применялась а сейчас существует более 10 разных сборощиков в жаве

    • @gamedevlavka
      @gamedevlavka  Před 2 lety

      @@macewite жава - прородитель сборки с поколениями?

    • @macewite
      @macewite Před 2 lety +1

      @@gamedevlavka я в этом не уверен) На самом деле там возле каждого объекта лежит байт который увеличивается при каждой сборке и если он превышает какой-то порог то объект переходит в следующее поколение.