1

Я использую C# (с XNA 4 и MonoGame). Я загружаю активы (текстуры, аудио) с использованием метода Load() Менеджера содержимого. Когда эти активы больше не нужны, как я могу правильно их записать из памяти?Поведение сборщика мусора

Я предполагаю, что после того, как все ссылки на загруженные активы будут перезаписаны (или установлены в нуль), активы автоматически удаляются сборщиком мусора. Является ли это правильным или активы все еще заблокированы из-за того, что они были загружены через ContentManager?

Необходимо ли вызывать ContentManager.Unload() для освобождения активов конкретного CM?

ответ

4

Да, если вы хотите, чтобы активы в менеджере контента полностью выгружались из памяти, необходимо позвонить по номеру Unload(). В дополнение к очистке внутреннего кеша Content Manager (который содержит ссылки на все, что вы загрузили), он будет вызывать Dispose() на любом ресурсе, который реализует IDisposable.

Обратите внимание, что причина того, что ContentManager поддерживает внутренний кэш ресурсов из-за загрузки и тот же ресурс дважды фактически не Load один и тот же ресурс, дважды: во второй раз, он просто передаст вам кэшированную ссылку на объект.

Смежные вопросы