ASP.NET垃圾收集:引用静态类属性危险吗?

时间:2016-04-27 22:38:14

标签: c# .net asp.net-mvc garbage-collection

让'MyModel'类包含以下属性:

public List ListOfAlbumsTitles => AlbumsHelper.ListOfAlbumsTitles;

AlbumsHelper是一个静态类。这是否意味着,由于引用静态类属性,MyModel的对象不会被自动收集?

3 个答案:

答案 0 :(得分:2)

不,MyModel的实例将被罚款。 MyModel商店是对其他地方(即AlbumsHelper)正在使用的内容的引用。

引用是涉及垃圾收集的单向方式。因此,只要Foo存在,BarFoo的引用就会使Bar保持活跃状态​​。反过来说没有任何意义。

答案 1 :(得分:1)

你已经反过来了。

只要没有对该对象的引用,就可以收集任何对象。传出引用与对象生存期无关。

想象一下如果不是这样的情况会发生什么 - 垃圾收集器永远不会收集任何没有null的东西 - 它对其他对象的所有引用。这不是很有用。

答案 2 :(得分:1)

不,逻辑是另一种方式,如果AlbumsHelper不是静态类,这个赋值将阻止它被收集。但是因为这个类是静态的并不重要。