【问题标题】:Garbage collector behaviour垃圾收集器行为
【发布时间】:2013-11-11 16:18:31
【问题描述】:

我使用 C#(使用 XNA 4 和 MonoGame)。我使用 Content Manager 的 Load() 方法加载资产(纹理、音频)。当不再需要这些资产时,我怎样才能正确地从内存中Unload()它们?

我假设一旦对加载资产的所有引用都被覆盖(或设置为 null),垃圾收集器会自动删除这些资产。这是正确的还是由于它们是通过 ContentManager 加载的资产仍被锁定?

是否需要调用 'ContentManager.Unload()' 来释放特定 CM 的资产?

【问题讨论】:

    标签: c# xna garbage-collection content-management-system xna-4.0


    【解决方案1】:

    是的,如果您希望将内容管理器中的资产从内存中完全卸载,则需要调用Unload()。除了清除内容管理器的内部缓存(保存对您已加载的所有内容的引用)之外,它还会在任何实现 IDisposable 的资源上调用 Dispose()

    请注意,ContentManager 维护资源的内部缓存的原因是因为两次加载相同的资源实际上并不加载两次相同的资源:第二次,它只会手动你缓存的对象引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2011-11-07
      • 2013-04-01
      相关资源
      最近更新 更多