垃圾收集器的行为(Garbage collector behaviour)

2019-10-18 23:07发布

我使用C#(使用XNA 4和MonoGame)。 我加载使用资产(纹理,音频) Load()的内容管理器的方法。 当不再需要这些资产,我怎么能正常Unload()从内存呢?

我认为,一旦被加载的资产的所有引用被覆盖(或设置为null)资产是由垃圾收集器自动删除。 这是正确的或有资产仍因锁定,他们通过ContentManager加载的事实呢?

难道要叫'ContentManager.Unload()来释放特定CM的资产?

Answer 1:

是的,如果你想在内容管理资产从内存中完全卸载,这是必要调用Unload() 除了清理出内容管理的内部缓存(持有到你载入一切引用),它会调用Dispose()上实现的任何资源IDisposable

需要注意的是,一个原因ContentManager保持资源的内部缓存是因为加载同一资源的两倍实际上并没有加载相同的资源了两次:第二次,它只会交给你缓存的对象引用。



文章来源: Garbage collector behaviour