显式释放内存

Mar*_*wer 2 c# asp.net memory-management

我知道这似乎是重复的,但我认为这种情况可能有些不同。

在我的MVC应用程序中,我有一个ViewModel,其中包含一个大List,用于显示类似于Excel工作表的表。每个MyComplexClass包含一个MyComplexClass列表和一个MyComplexColumn列表。

这会占用很大的内存,但是现在我遇到了问题。我应该写一个方法来清理我的大表,并向其中加载另一组数据。我可以这样写:

    MyViewModel.Lines = new List<MyComplexClass>();
    MyViewModel.LoadNewSetOfData(SetOfData);
Run Code Online (Sandbox Code Playgroud)

但是,从C背景开始,明确地失去对旧List的引用并不是我能做的,并且每天早晨继续照照镜子。

我看到HereHereHere,可以将引用设置为null,然后调用

GC.Collect()
Run Code Online (Sandbox Code Playgroud)

但是有人告诉我,我并不是真正的最佳实践,尤其是因为它可能确实影响性能,并且因为我无法知道GC是否已处置了这种特定的内存分配。

我有没有办法像Free()这样的东西继续生活下去?

谢谢

Sea*_*ean 5

不用担心!试图“鼓励”垃圾收集器回收内存并不是一个好主意-只需将其留在后台进行即可。

只需加载不同的数据集即可。如果内存不足,GC将立即启动以回收内存,而您无需执行任何操作,并且如果有足够的可用内存,那么您就可以加载新的数据集而不会受到垃圾回收的打击。