gpt4 book ai didi

c# - .NET 垃圾收集器

转载 作者:行者123 更新时间:2023-11-30 22:04:56 25 4
gpt4 key购买 nike

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

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)?

最佳答案

它将被收集(最终),因为没有更多的引用资料。在字典中获取对某些内容的引用并不能为您提供对字典本身的任何引用!除非该对象以某种方式在内部引用字典,否则就是这样。

关于c# - .NET 垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com