写入文件,内存使用量稳步增加

时间:2016-01-13 20:07:19

标签: c# .net logging optimization binarywriter

我有一个应用程序,我需要不断地将二进制文件写入文件。数据位很小,每个大约1K。运行的计算机不是很好,正在运行XP。我遇到的问题是,当我打开日志记录时,计算机刚刚完全被软化,我看到任务管理器,只是看到内存使用量一直在上升,直到它崩溃。

一位同事建议我将数据包保留在内存中,直到经过一段时间,然后立即写下所有内容,而不是单独编写每个数据包 - 尝试过,同样的问题。

这是代码(loggingBufferList<byte[]>我在间隔通过时存储数据包的信息):

if ((DateTime.Now - lastStoreTime).TotalSeconds > 10)
{
    string fileName = @"C:\Storage\file";
    FileMode fm = File.Exists(fileName) ? FileMode.Append : FileMode.Create;
    using (BinaryWriter w = new BinaryWriter(File.Open(fileName, fm), Encoding.ASCII))
    {
        foreach (byte[] packetData in loggingBuffer)
        {
            w.Write(packetData);
        }
    }
    loggingBuffer.Clear();
    lastStoreTime= DateTime.Now;
}

我应该做些什么来实现这个目标?

1 个答案:

答案 0 :(得分:1)

在我看来,当你每10秒写一次时,你可以在两者之间关闭文件。并清理所有相关的文件写入事物。也许那会解决你的问题。 其次,我建议在实际写入数据的函数外部创建BinaryWriter。它会让事情更加清晰。在您当前的代码中,您每次都要检查是否附加数据或创建新文件并写入文件。如果你在函数外部执行此操作并只调用一次,这也可以节省内存。所有未经我测试的,即:)