Во время разбора исходного кода библиотеки A* я спросил у Олега, почему массив из объектов вынесен в качестве свойства класса, хотя массив используется только в рамках одного-двух методов. Можно же было инициализировать его локально. Олег пояснение на этот счет.
Нельзя допускать перегрузку в работе Garbage collector. Перегрузка приводит к кратковременным, но периодическим фризам(торможениям).
### Как происходит перегрузка Garbage collector
Вызов Garbage collector блокирует все потоки во время своей работы. Нельзя провоцировать работать Garbage collector долгое время.
##### Первая причина долгой работы
Чем больше ссылочных объектов в heap (в куче), тем дольше будет работать Garbage collector.
##### Вторая причина
Объекты в heap располагаются неупорядоченно. Частый вызов Garbage collector может сильнее [[Фрагментация и Дефрагментация памяти|фрагментировать]] память. Если память сильно фрагментирована, то Garbage collector переместит объекты в один непрерывный блок памяти ([[Фрагментация и Дефрагментация памяти|дефрагментация]]). Это может занять долгое время.
### Как избежать перегрузки Garbage collector
Нужно избегать частую аллокацию ссылочных типов (классов) в heap (в кучу), чтобы Garbage collector не вызывался часто и надолго, тем самым не вызывал фризы.
На практике избежать можно, не аллоцируя объекты в update и его производных вызовах.
Это не значит, что всеми способами нужно избегать вызов GC. Если количество экземпляров, которое ему предстоит удалить, невелико, то блокировка потоков будет незаметна для игрока. StringBuilder
### Полезная информация
Garbage collector содержится во всех языках программирования с [automatic memory management](https://www.google.com/search?q=programming+languages+with+automatic+memory+management&newwindow=1&ei=R7ZvY_2VH4eRsAf2s4cg&oq=automatic+memory+management+programming+languages&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAxgAMgYIABAIEB46CggAEEcQ1gQQsAM6DQgAEOQCENYEELADGAE6CQgAEIAEEA0QEzoKCAAQCBAHEB4QEzoKCAAQCBAeEA0QEzoICAAQCBAHEB5KBAhNGAFKBAhBGABKBAhGGAFQrwxYvStgw1ZoAXABeACAAfUBiAGoEJIBBTAuNC42mAEAoAEByAENwAEB2gEGCAEQARgJ&sclient=gws-wiz-serp). вызывается автоматически, но можно вызвать принудительно, написав GC.Collect();.
Garbage collector работает только с классами (ссылочные объекты), со структурами не работает.