Каждый экземпляр ContentManager
будет загружать любой данный ресурс только один раз.Во второй раз, когда вы запрашиваете ресурс, он вернет тот же экземпляр , который был возвращен в прошлый раз.
ReferenceEquals(Content.Load<Texture2D>("something"),
Content.Load<Texture2D>("something")) == true
Для этого ContentManager
ведет список всего содержимогоон загрузился внутри.Этот список не позволяет сборщику мусора очистить эти ресурсы, даже если вы их не используете.
Чтобы выгрузить ресурсы и очистить этот внутренний список, вызовите ContentManager.Unload
.Это освободит память, которую использовали загруженные ресурсы.Теперь, если вы снова запросите тот же ресурс - он будет перезагружен.
Конечно, если вы используете эти ресурсы при вызове Unload
, все эти общие экземплярыто, что вы загрузили, будет утилизировано и непригодно для использования.
Наконец, не вызывайте Dispose
для всего, что выходит из ContentManager.Load
, так как это сломает все экземпляры, к которым предоставлен общий доступ, и вызовет проблемы при ContentManager
пытается избавиться от них в Unload
позже.