未分配给变量的对象上的垃圾收集

时间:2011-01-12 01:38:37

标签: c# garbage-collection object-initialization

我正在研究使用此模式的项目

var businessEntity = new DAL().GetObject(id);
// do something with the business entity.

有没有人遵循这种模式?

这会导致任何内存管理问题吗?垃圾收集器的任何复杂情况?

由于

4 个答案:

答案 0 :(得分:2)

它运作得很好。它将被收集得很好。根据实现和对象,在行的末尾将标记为要收集,或者businessEntity超出范围。

答案 1 :(得分:1)

这是非常典型的代码,不会,它不会导致垃圾收集器出现任何问题。

对未命名对象的引用位于VM堆栈中(否则无法调用该方法),该对象位于GC的根集中。

答案 2 :(得分:0)

不,GC最终将清除DAL对象,如果没有其他任何东西需要用它做,或者没有其他东西指向它。您有businessEntity对象的引用,因此在引用无效之前GC不会触及它。

答案 3 :(得分:-1)

此对象将在businessEntry引用时生效,并在变量超出范围后的某个时间收集