AndroidスタジオJavaからXamarin C#にコードを転送しようとしていますが、その間に2つのクラスを強く参照しないようにしなければならないという記事を思いつきました。ネストされたクラスはガベージコレクタを動作させませんか?
代替案は、このような問題を回避するために、2つのクラスのいずれか(好ましくは子クラスが正しく理解されている場合)でWeakReferenceを使用することを推奨しました。例えば
この:
public class Header {
List<Detail> _details = new List<Detail>();
}
public class Detail {
Header _parent;
}
は、理想的には、私が使用しているこれは何
に変更する必要がありますが、これです:
public class Header {
List<Detail> _children = new List<Detail>();
private class Detail {
Detail() {
Header.this._children.add(this);
}
}
}
これは強いがあることを意味しますヘッダからそのリストまでの細部への参照、および詳細からのヘッダへの参照。
garbadgeコレクタに問題がありますか?
List<Detail>
をList<WeakReference>
に変更した方が良いでしょうか?もしそうなら、その細部が使用されていない時代の後にいつも処分されるだろうか?
ご協力いただけると助かります。
GCは循環参照を処理できます。グローバルに固定されたオブジェクトからオブジェクトへのパスがあるかどうかを調べています。そうでなければ、それはきれいになる。 –
あなたはそれについて確かですか?このhttps://developer.xamarin.com/guides/cross-platform/deployment,_testing,_and_metrics/memory_perf_best_practices/#weakreferencesによれば、gcが処理できなかったオブジェクトを – Cruces