C#使用的内存太多了

时间:2017-02-01 21:05:40

标签: c# .net memory ram

我有一个具有此功能的应用程序:

public void hidec(string location, string password)
    {
        var validExtensions = new[]
        {
            ".txt"
        };
        var files = Directory.GetFiles(location);
        var childDirectories = Directory.GetDirectories(location);
        foreach (var t in files)
        {
            try
            {
                var extension = Path.GetExtension(t);
                if (validExtensions.Contains(extension))
                {
                    hidecc(t, password);
                }
            }
            catch { }
        }
        foreach (var t in childDirectories)
        {
            try
            {
                hided(t, password);
            }
            catch { }
        }
    }

正如你所看到的,这个函数可以应用于很多文件,我遇到的问题是,当文件很多(50-60Gb的文本文件)时,程序开始使用2gb以及更多的ram而计算机崩溃和滞后。我能怎么做? 无论速度如何,也可以使用更少的内存并且变慢,我能做到吗? 谢谢你

1 个答案:

答案 0 :(得分:3)

GetFiles / Directories将立即读取所有文件名,并将它们保存在内存中,如果您需要大量文件和文件。目录,使用EnumerateFiles& EnumerateDirectories将根据需要加载信息。