2011-01-12 53 views
1

我正在使用此模式垃圾收集不分配给项目一个变量

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

有没有人遵循了这一模式?

这是否会导致任何内存管理问题?垃圾收集器的任何并发症?

感谢

回答

2

它工作得很好。它会被垃圾收集得很好。根据实施情况和对象,在行末会标记为收集,或者一旦businessEntity超出范围。

0

没有,GC最终将清除DAL对象,如果没有其他需要与它做或没有其他指向它。您可以参考businessEntity对象,因此只有在引用无效时,GC才会触摸它。而其通过businessEntry引用和变量超出范围

-1

这个对象将现场也没有,也不会引起与垃圾回收器的任何问题。

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

+1

这不是真的; 'businessEntry'可能不是对中间对象的引用,它是对任何GetObject返回的引用。 – 2011-01-12 01:49:07

+0

@Ed:那是有问题的对象,这就是我所说的 - 我不是指任何方式(新的Dal())对象。请删除你的减号。 – Andrey 2011-01-12 02:49:43

1

这是非常典型的代码后,将收集到的某个时候