【问题标题】:Is memory occupied by instances freed when their container is cleared?清除容器时,实例占用的内存是否被释放?
【发布时间】:2016-06-16 18:31:30
【问题描述】:

来自 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 实例占用的内存,除非它们在其他地方被引用。我是对的还是应该做任何额外的检查以确保内存被释放?谢谢

【问题讨论】:

    标签: c# memory-management garbage-collection


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多