GC опять виноват? Устраняем пролаги эффективно
Каждый Unity разработчик сталкивался с тем, что в его игре происходят периодические пролаги. Обычно это происходит из-за того, что программист при написании игровой системы мало заботился о рациональном использовании памяти и это приводило к проблемам с Garbage Collector.
Garbage Collector частая причина пролагов
Когда нужно создать какой-нибудь массив или List, под него будет выделена память. Если потом этот объект не будет использоваться, то им займётся Garbage Collector (GC). Он следит, за всеми объектами и, если объект становится не нужен, то GC освобождает память, которая использовалась объектом. Если создавать много таких объектов, а потом сразу переставать использовать, то у игрока появятся видимые пролаги, в моменты, когда GC освобождает память.
Одноразовые коллекции приводят к нагрузке на Garbage Collector
Ниже пример кода, который оставляет в словаре только те элементы, которые есть в массиве. В момент создания HashSet происходит аллокация и, если такая функция вызывается часто, то появятся проблемы.