清除容器时释放的实例占用的内存是多少?

时间:2016-06-16 18:31:30

标签: c# memory-management garbage-collection

来自c背景,我对C#中的内存管理有疑问。我的一个类拥有一个映射类的容器:

public class B
{
     // some data members, constructors, etc...
}

public class A {

    Dictionary<string, B>() m_dictionary;

    // other data members

    public A() { m_dictionary = new Dictionary<string, B>(); }

    // more methods, etc.

    public void clearDictionary() {  m_dictionary.clear(); }
}

据我所知,一旦调用了clearDictionary(),垃圾收集器最终将释放内部所有B实例占用的内存,除非它们被引用到其他地方。我是对的还是应该进行任何额外的检查以确保释放内存?感谢

1 个答案:

答案 0 :(得分:1)

当没有对象的引用时,会收集该对象。如果对m_dictionary.clear()的调用删除了对字典中B实例的引用,并且在其他任何地方都没有对该实例的引用,那么该实例就有资格进行收集。