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的引用并不是我能做的,并且每天早晨继续照照镜子。
我看到Here,Here和Here,可以将引用设置为null,然后调用
GC.Collect()
Run Code Online (Sandbox Code Playgroud)
但是有人告诉我,我并不是真正的最佳实践,尤其是因为它可能确实影响性能,并且因为我无法知道GC是否已处置了这种特定的内存分配。
我有没有办法像Free()这样的东西继续生活下去?
谢谢
不用担心!试图“鼓励”垃圾收集器回收内存并不是一个好主意-只需将其留在后台进行即可。
只需加载不同的数据集即可。如果内存不足,GC将立即启动以回收内存,而您无需执行任何操作,并且如果有足够的可用内存,那么您就可以加载新的数据集而不会受到垃圾回收的打击。