字符串内存未在方法结束时释放?

时间:2018-05-04 08:30:12

标签: c# memory memory-management streamreader

我正在使用xml到csv转换器,我发现我的程序可能会使用此部分的太多内存:

using (StreamReader sr = File.OpenText(txtFileLocation))
{
    string s = sr.ReadToEnd();
    s = s.Replace("
", "");
    xml.LoadXml(s);
}

问题是,当字符串变量设置完毕后,我的app会占用200m内存,然后当我将其加载到XmlDocument时,它会达到400但它不会释放字符串(或者它是之后StreamReader?)200mo(除非我重新启动此方法)。

这大部分内存来自40mo源文件,所以我认为如果我尝试转换更大的文件会变得更糟。因此,我的问题,(如何)可以释放这些过多的内存使用量?

1 个答案:

答案 0 :(得分:0)

您如何知道流阅读器或您刚加载的XML对象未使用内存? xml定义在哪里?

内存太多了?什么是最好的决定方式。总的来说,.Net是管理的#34;并为您处理内存管理。除非你确实遇到问题,否则不要干涉或担心。只是适当地调整范围变量,在可用时调用dispose。如果你正在使用" unmanaged"资源然后你必须正确实施IDisposable(这里不适用。)

如果您担心文件会非常大,请不要立即阅读,请逐行阅读。但是,您仍然将其加载到xml中,因此需要采用另一种方法。