C# 垃圾收集器行为

C# 垃圾收集器行为,c#,xna,garbage-collection,content-management-system,xna-4.0,C#,Xna,Garbage Collection,Content Management System,Xna 4.0,我使用C和XNA4以及MonoGame。我使用内容管理器的加载方法加载资源、纹理和音频。当不再需要这些资产时,如何从内存中正确卸载它们 我假设一旦对加载的资产的所有引用被覆盖或设置为null,垃圾收集器就会自动删除这些资产。这是正确的,还是由于资产是通过ContentManager加载的,因此资产仍然被锁定 是否需要调用“ContentManager.Unload”来释放特定CM的资产?是的,如果您希望内容管理器中的资产从内存中完全卸载,则需要调用Unload。除了清除contentmanage

我使用C和XNA4以及MonoGame。我使用内容管理器的加载方法加载资源、纹理和音频。当不再需要这些资产时,如何从内存中正确卸载它们

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


是否需要调用“ContentManager.Unload”来释放特定CM的资产?

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


请注意,ContentManager维护内部资源缓存的原因是,两次加载同一资源实际上不会两次加载同一资源:第二次,它只会将缓存的对象引用交给您。

是,如果您希望内容管理器中的资产从内存中完全卸载,有必要呼叫卸载。除了清除contentmanager的内部缓存(其中包含对已加载的所有内容的引用)之外,它还将对实现IDisposable的任何资源调用Dispose

请注意,ContentManager维护内部资源缓存的原因是,两次加载同一资源实际上不会两次加载同一资源:第二次,它只会将缓存的对象引用交给您