次のプロパティを含む「MyModel」クラスとしましょう:ASP.NETガベージコレクション:静的なクラスプロパティを参照しています危険ですか?
公開リストListOfAlbumsTitles => AlbumsHelper.ListOfAlbumsTitles;
AlbumsHelper
は静的なクラスです。それは、MyModelのオブジェクトが静的クラスプロパティを参照するため自動的に収集されないことを意味しますか?
次のプロパティを含む「MyModel」クラスとしましょう:ASP.NETガベージコレクション:静的なクラスプロパティを参照しています危険ですか?
公開リストListOfAlbumsTitles => AlbumsHelper.ListOfAlbumsTitles;
AlbumsHelper
は静的なクラスです。それは、MyModelのオブジェクトが静的クラスプロパティを参照するため自動的に収集されないことを意味しますか?
いいえ、MyModel
のインスタンスは問題なく処理されます。 MyModel
が保存しているものは、別の場所で使用されているもの(つまり、AlbumsHelper
)への参照です。
参照は、ガベージコレクションに関する一方向です。だから、Foo
からBar
への参照は、Bar
が存続する限り、Foo
を生き続けるでしょう。それ以外の方法は何も意味しません。
あなたはそれとは逆の方法です。
に参照番号がないとすぐに、どのオブジェクトも収集できます。送信参照はオブジェクトの存続期間に影響しません。
ガベージコレクタは、それが他のオブジェクトに対して持っているすべての参照のうち、null
を出さなかったものを決して収集することはできません。これはあまり役に立ちません。
いいえ、ロジックは逆ですが、AlbumsHelperが静的なクラスでない場合、この割り当てによって収集が妨げられます。しかし、クラスは静的なので重要ではありません。
ええ、それはかなり明白でした。詳細な答えのためのthx! – 52hertz