나는 종속 객체가있는 상황에 직면하고 있으며 객체와 모든 참조를 제거 할 수 있기를 바랍니다.목록에서 항목 제거 및 그들에 대한 모든 참조
두 개의 노드를 참조하는 분기 유형이있는 아래 코드와 같은 개체 구조가 있다고 가정 해보십시오. 내가 그래프 클래스의 노드 목록에서 노드를 제거하는 경우 하나 이상의 지점 개체가 여전히 따라서 메모리에 유지, 제거 된 노드에 대한 참조를 포함
public class Node
{
// Has Some Data!
}
public class Branch
{
// Contains references to Nodes
public Node NodeA
public Node NodeB
}
public class Graph
{
public List<Node> Nodes;
public List<Branch> Branches;
}
, 그것은 여전히 가능 정말 무엇을 반면 I 제거 된 노드에 대한 참조를 null로 설정하고 가비지 콜렉션을 시작하도록하는 것이 좋습니다.
각 분기를 열거하고 각 노드 참조를 순차적으로 확인하는 것 외에 참조를 제거하는 방법에 대한 현명한 아이디어가 있습니까? 각 Branch 인스턴스의 노드 및 실제로 제거 된 Node를 참조하는 다른 클래스에?
사실 분기에 데이터를 저장하고 있습니까? 그렇지 않으면 해당 클래스를 완전히 제거하고 관련 노드를 Node 클래스에 저장하면됩니다. –
안녕하세요, 저는 다른 데이터를 저장하고 있습니다. 위의 데이터 구조는 실제 모델의 참조가 어디에 있는지 보여주는 간단한 예제 일뿐입니다. – LiamV