2011-01-12 58 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

這是非常典型的代碼後,將收集到的某個時候