メモリ内にノードの大規模なネットワークがあり、すべてが同じオブジェクトへの参照を持っています。
例として。ネットワーク内の各ノードがこのクラスであると仮定しましょう。
public class Node
{
/** This is the shared object **/
public Context context { get; private set; }
public Node Parent { get; private set; }
public List<Node> Children { get; private set; }
public Node(Context pContext, Node pParent, List<Node> pChildren)
{
this.context = pContext;
this.Parent = pParent;
this.Children = pChildren;
}
}
プロパティは、ネットワーク内のすべてのcontext
ノードのコンストラクターに渡されるオブジェクトです。
ネットワークが非常に大きく (数千のノード)、ツリー構造を形成していると仮定します。それらの間のこの共通の共有参照は、メモリリークにつながりますか?
Parent
に設定してツリーのブランチをデタッチするとNull
。この共有オブジェクトへの参照が残っていC#
ても、そのブランチは正しくガベージ コレクションになりますか?context
これが正しく機能するようにするには、どのコーディング手法を採用する必要がありますか。