2010-04-16 22 views
0

什麼是創建變量的使用的影響:與新的數據集聲明變量VS數據集

昏暗DS作爲新的數據集
DS = GetActualData()

其中GetActualData()還創建新的DataSet並返回它?
「新建」的原始空DataSet是否只留在堆中?

如果這種代碼在很多地方會怎樣?這會影響ASP.NET過程並使其更快地回收嗎?

回答

1

影響是您創建的對象超出了您的需要。

未使用的對象將被留在堆,所以它需要被垃圾收集終。如果你這麼做了,這將導致垃圾收集器不得不更頻繁地運行。

比起做但它應該是最小的實際工作中,即實際填充數據集是這麼多的工作,額外的未使用的對象是幾乎可以忽略。

它不會導致ASP.NET過程回收越早,作爲對象的吞吐量/ GC頻率不是一個因素。

雖然影響很小,但代碼當然不應創建那些未使用的對象。也許比性能更重要的是,代碼並不完全符合你想要完成的任務。每一個這樣的小差異都會使代碼更難以維護。

1

Dim ds as New DataSet分配將是當執行GC.Collect()垃圾收集的存儲器。

簡單 - 當DS的方法分配新的內存,舊內存不會從任何引用,並會被垃圾收集,當談到時間。

+0

我明白,不過,我的問題是,是否有數百個這樣的新的數據集調用,他們是沒有必要的一個主要問題還是他們真的沒什麼大不了的GC會照顧他們。 – eych 2010-04-16 13:51:09

+1

不留垃圾會推遲GC.Collect(),畢竟如果內存變短,它會GC.Collect()和性能將被擊中。有不必要的新數據集是你應該照顧的。 – 2010-04-16 13:53:53