Как пул объектов защищает эффекты от фрагментации памяти
Один взмах посоха порождает сотни частиц. Если каждую создавать и удалять отдельно, свободное место в памяти постепенно дробится: суммарно его хватает, а цельного блока нужного размера уже нет.
Пул объектов заранее резервирует один блок и хранит в нём готовые экземпляры. Система частиц берёт свободный, помечает его занятым и возвращает после анимации. Выделять память для каждой искры во время эффекта больше не нужно.
Цена предсказуемой работы: ёмкость пула фиксирована. Когда свободных слотов нет, можно пропустить новую частицу, заменить самый тихий из играющих звуков или расширить пул. В разборе Object Pool на Game Programming Patterns показано, как выбрать стратегию переполнения, подобрать размер слотов и не оставить в повторно используемом объекте старые данные.
Post #2084
391