.NET垃圾收集器

穆斯林本·达欧(Ben Dhaou)

这是一个非常基本的问题。我正在调试一些内存泄漏,并且完全感到困惑。假设我有以下内容:

public class ObjectData : IDataObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ObjectRepository<T> where T : IDataObject
{
    private Dictionary<int, T> Objects;

    public ObjectRepository()
    {
        Objects = new Dictionary<int, T>();
        // load Data
    }

    public T GetDataObject(int id);
    {
        return Objects[id];
    }

    public Reset()
    {
        Objects = new Dictionary<int, T>();;
    }
}

现在假设我有以下程序流程:

public Main()
{
    var DataRepository = new ObjectRepository<ObjectData>();

    // Constructor called and Data loaded

    var myObject = DataRepository.GetDataObject(1);

    DataRepository.Reset();

    // Call manually the garbage collector or leave it

    // Program flow continue after this
}

问题是,垃圾收集器会摆脱由构造函数最初创建的收集吗?还是不是因为程序流(myObject)中仍引用了其中一个元素

克里斯

由于没有更多参考资料,它将被收集(最终)。在字典中获取对某物的引用不会给您对字典本身的任何引用!除非那个对象以某种方式在内部引用了字典,就是这样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章