我在C#工作,我有一个大文本文件(75MB)我想保存与正则表达式匹配的行
我尝试使用streamreader和ReadToEnd读取文件,但它需要400MB的内存
并在再次使用时创建内存不足异常.
然后我尝试使用File.ReadAllLines():
string[] lines = File.ReadAllLines("file");
StringBuilder specialLines = new StringBuilder();
foreach (string line in lines)
if (match reg exp)
specialLines.append(line);
Run Code Online (Sandbox Code Playgroud)
这一切都很棒,但是当我的函数结束时,所采用的内存并没有清除,只留下300MB的已用内存,只有在调用函数并执行行时:string [] lines = File.ReadAllLines("file"); 我看到内存清理为50MB给予或接受然后重新分配回200MB
如何清除此内存或以不同的方式获取我需要的行?
var file = File.OpenRead("myfile.txt");
var reader = new StreamReader(file);
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
//evaluate the line here.
}
reader.Dispose();
file.Dispose();
Run Code Online (Sandbox Code Playgroud)