我有一个控制台应用程序,它读取一个包含 40k+ 行的大型文本文件,每一行都是我在搜索中使用的键,结果将写入输出文件。问题是我让这个控制台应用程序运行了一段时间,直到它突然关闭,我意识到当我上次看到它崩溃时,进程内存使用率真的很高,只有 1.6gb。
我环顾四周并没有找到很多答案我确实尝试使用 gcAllowVeryLargeObjects 但这似乎我只是在回避这个问题。
下面是我写到文件的 main() 的片段。我似乎无法理解为什么内存使用率如此之高。每次写入后我都会刷新写入器(可能是因为我将文件保持打开这么长时间吗?)。
TextWriter writer = new StreamWriter("output.csv", false));
foreach (var item in list)
{
Console.WriteLine("{0}/{1}", count, numofitem);
var result = TableServiceContext.Read(p.id);
if (result != null)
{
writer.WriteLine(String.Join(",", result.id,
result.code,
result.hash));
}
count++;
writer.Flush();
}
writer.Close();
编辑:我的电脑上有 32gb 的内存,所以我确信它没有内存不足,因为我没有足够的内存。
Edit2:更改了存储库的名称,因为这具有误导性。