3

双方向リンク リストがあるとします。次のようにシーケンスを削除したい:

begin - element - element x element - element - element x element - end
                        \_________________________________/
-: reference
x: removed reference

削除する要素間の参照も削除する必要があるかどうか、またはガベージ コレクターがそれをより適切に処理するかどうかを知りたいです。

4

2 に答える 2

6

標準のガベージ コレクターは、循環参照を処理できるマーク アンド スイープアルゴリズムを使用するため、それらを null にする必要はありません (到達可能なメモリから到達不能への参照のみを null にする必要があります)。

于 2012-11-11T15:15:00.100 に答える
6

これらの参照を削除する必要はありません。ガベージ コレクターは、削除しようとしている 3 つの要素に到達できなくなったことを自明に判断できるため、それらをスキャンして可能性のあるポインターを探す必要はありません。つまり、そうしてもパフォーマンスは向上しません。

この理由を理解するには、このブログ投稿で紹介されている最初のアルゴリズムを検討してください。

于 2012-11-11T13:42:49.987 に答える