使用以下方法创建变量有什么影响:
Dim ds作为新数据集
ds = GetActualData()
其中GetActualData()还创建一个新数据集并返回它? 那些'New'ed的原始空数据集是否刚刚留在堆中?
如果这种代码在很多地方怎么办?这会影响ASP.NET进程并使其更快地回收吗?
答案 0 :(得分:1)
执行Dim ds as New DataSet
时,将使用GC.Collect()
分配的内存进行垃圾回收。
简单地说 - 当ds在方法中分配新内存时,旧内存将不会被引用,并且会在需要时进行垃圾回收。
答案 1 :(得分:1)
影响是您创建的对象超出了您的需要。
未使用的对象将留在堆上,因此最终需要进行垃圾回收。如果你这么做,它将导致垃圾收集器不得不更频繁地运行。
与完成的实际工作相比,它应该是最小的,即实际填充数据集的工作要多得多,以至于额外的未使用对象几乎可以忽略不计。
它不会导致ASP.NET进程更快地回收,因为对象吞吐量/ GC频率不是一个因素。
尽管影响很小,但代码当然不应该创建那些未使用的对象。也许比性能更重要的是代码与您想要完成的内容并不真正对应。像这样的每一个小差异都会使代码难以维护。