即使正确处置/取消引用,

时间:2018-05-15 17:26:45

标签: c# .net .net-core httpwebrequest

我有一个C#.NET核心工具,可以抓取HTML,10K-250K +条目。它稳定并且所有内存都得到妥善处理和处理(WebRequests, Responses, Streams),因为输出数据直接写入文件但内存使用量不断增长......并且不断增长,并且不断增长。内存中的所有内容都是byte[],然后是string版本的主动处理页面,每次500以下。然后工作结束,与其活动相关的一切都被处理掉,所有单位的作品都失去所有参考,记忆不会减少。它使用3-5GB的RAM。

最后,所有活动结束,我退出完成工作的函数,我通过Console.ReadKey()将其置于等待状态,但即使工具中没有活动15分钟,内存也不会被释放。现在......如果我在最后写一个GC.Collect,内存会立即从3-5GB下降到30MB。嗯......考虑到代码的预期行为,实际内存使用量不应超过250MB RAM。

如果我用C ++编写同样的东西,无论什么时候我都不会超过250MB的RAM,因为C ++ 倾向于来释放我在代码中释放的内存。这样很好。

问题是为什么即使在工具闲置几分钟后这个淫秽内存也没有被清除但如果我强行收集它会立即掉到应该的位置?如果我知道所有对象都已被处理掉并且在处理后丢失了所有引用,为什么内存使用率会持续上升。

0 个答案:

没有答案