作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这看起来像是重复的,但我认为这个具体案例可能有点不同。
在我的 MVC 应用程序中,我有一个 ViewModel,其中包含一个大列表,用于显示类似于 Excel 工作表的表格。每个 MyComplexClass 都包含一个 MyComplexClass 列表和一个 MyComplexColumn 列表。
这会占用大量内存,但现在我遇到了问题。我应该编写一个方法来清理我的大表,并将一组不同的数据加载到其中。我可以这样写:
MyViewModel.Lines = new List<MyComplexClass>();
MyViewModel.LoadNewSetOfData(SetOfData);
但是,来自 C 背景,明确地失去我对旧列表的引用不是我能做的,并且每天早上继续看着镜子里的脸。
我看到了Here , Here , 和 Here ,我可以将引用设置为 null,然后调用
GC.Collect()
但我被告知我并不是真正的最佳实践,尤其是因为它可能真的会影响性能,而且因为我无法知道 GC 是否已经处理掉了这个特定的内存分配。
有什么方法可以让我调用 Free() 之类的东西并继续生活吗?
谢谢
最佳答案
别担心!试图“鼓励”垃圾收集器回收内存并不是一个好主意——让它在后台完成它的工作。
只需加载您的不同数据集。如果内存越来越低,GC 将启动以回收内存,而无需您执行任何操作,如果有足够的内存可用,那么您将能够加载新的内存集而不会受到垃圾收集的影响。
关于c# - 显式释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37812960/
我是一名优秀的程序员,十分优秀!