3

私は自分のアプリケーションで多くのオブジェクト ツリーを作成します。ここで、各ノードは典型的なツリー ノード (親への参照と子への参照のリスト) です。これらのツリーは一時的なものです。つまり、アプリケーションが終了する前に破棄する可能性があります。

これまでのところ、ツリー ブランチを再帰的にトラバースして「破棄」できるメソッドを常にツリー ノード クラスに追加してきました (親参照を null に設定し、子リストをクリアするなど)。

public void destroy() {
    for (Node node : children) {
        node.destroy();
    }
    parent = null;
    children.clear();
}

どこかに保存したツリーのルートへの参照を単純にnullするだけでは十分ではないため、これは常に私には理にかなっています. . これを想定してそのような方法を提供することは正しいですか?

私が自分自身を疑っている理由は、ツリー構造のサポートを提供する API でそのようなメソッドをめったに見ないからです (少なくともツリー ノード インターフェイスでは直接ではありません)。そのような場合に対処するための適切なパターンは何ですか?

4

2 に答える 2

4

オブジェクトを自分で破棄または消去する必要はありません。

ライブオブジェクトからそれらへの参照がないことを確認する必要があるだけです(ライブは明確に聞こえますが、これはかなり複雑な定義です)。

不要なオブジェクト自体にカリキュラム参照があったとしても、それらを気にする必要はないことに注意してください。GC がこれを処理します。

関連している:

Javaでオブジェクトをnullに割り当てるとガベージコレクションに影響しますか?

クラス自体からクラスを無効にすることはできますか?

JUnitティアダウンメソッドでオブジェクトを無効にすることは本当に必要ですか?

于 2013-04-18T08:24:33.230 に答える