这是一个非常基本的问题。我正在调试一些内存泄漏,并完全困惑。假设我有以下几点:.NET垃圾回收器
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
)?
感谢您的提示!关于内部参考:) –