- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可以创建许多内存密集型对象,然后放弃对它们的引用。例如,我可能想从数据库中下载某些数据并对其进行操作,我将进行100次单独的下载和处理迭代。我可以一次声明一个DataTable变量,然后对于每个查询,使用构造函数将其重置为新的DataTable对象,放弃内存中的旧DataTable对象。
DataTable类具有轻松的内置方式来释放其使用的内存,包括Rows.Clear()和.Dispose()。因此,我可以在每次迭代结束时执行此操作,然后再将变量设置为新的DataTable对象。否则,我可能会忘记它,而让CLR垃圾收集器为我做这件事。垃圾收集器似乎非常有效,因此两种方法的最终结果应该相同。在不需要大量内存的对象时(最好添加代码来做到这一点),还是仅仅依靠垃圾收集器为您完成所有工作(是您的摆布),是“更好”的做法吗? GC算法,但是您的代码较小)?
根据要求,以下代码说明了回收的DataTable变量示例:
// queryList is list of 100 SELECT queries generated somewhere else.
// Each of them returns a million rows with 10 columns.
List<string> queryList = GetQueries(@"\\someserver\bunch-o-queries.txt");
DataTable workingTable;
using (OdbcConnection con = new OdbcConnection("a connection string")) {
using (OdbcDataAdapter adpt = new OdbcDataAdapter("", con)) {
foreach (string sql in queryList) {
workingTable = new DataTable(); // A new table is created. Previous one is abandoned
adpt.SelectCommand.CommandText = sql;
adpt.Fill(workingTable);
CalcRankingInfo(workingTable);
PushResultsToAnotherDatabase(workingTable);
// Here I could call workingTable.Dispose() or workingTable.Rows.Clear()
// or I could do nothing and hope the garbage collector cleans up my
// enormous DataTable automatically.
}
}
}
最佳答案
好的,该花点时间清理一下了(因为我的原始帖子有点泥泞)。
IDisposable与内存管理无关。 IDisposable
允许对象清除它可能持有的任何 native 资源。如果对象实现IDisposable
,则应确保使用using
块或在完成后调用Dispose()
。
至于定义占用大量内存的对象,然后丢失对它们的引用,这就是垃圾收集器的工作方式。那是一件好事。让它发生,让垃圾收集器完成工作。
...因此,要回答您的问题,否。依靠.NET垃圾收集器并不是一个坏习惯。实际上恰恰相反。
关于.net - 依靠.NET自动垃圾收集器是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7520881/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!