이것은 매우 기본적인 질문입니다. 일부 메모리 누수를 디버깅하고 완전히 혼란스러워. 다음 내가 가진 가정 :.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
)에서 참조 되었기 때문에 그렇지 않습니다.
힌트를 보내 주셔서 감사합니다! 내부 참조에 대해 :) –