我的C#程序正在使用过量内存(BinaryReader进行缓冲)



我的程序使用了过多的内存。我正在尝试读取程序的前512个字节,并将它们存储在内存中。我认为它应该只使用512字节的内存,但由于某种原因,它使用了1GB。

BinaryReader reader;
byte[] buffer = new byte[0];
foreach (IStorageDevice device in Devices)
{
reader = new BinaryReader(File.Open(device.Location, FileMode.Open));
buffer = reader.ReadBytes(512);
reader.Close();
reader.Dispose();
}

在我做的测试中只有一个StorageDevice,所以它只加载一个文件。

我似乎找不出它占用这么多内存的原因。如有任何帮助,我们将不胜感激。

DevicesIStorageDevices的List。存储设备只是一个类,它有一个字符串对象,该对象是要读取的文件的路径(目前它是我桌面上的.bin文件(

public class ROM : IStorageDevice
{
public string Location { get; set; }
public ROM(string Location)
{
this.Location = Location;
}
}

您需要处理您的资源。这就是使用的作用。当正在使用的块退出时,流将被丢弃。

试试这样的东西:

byte[] buffer = new byte[512];
foreach (IStorageDevice device in Devices)
{
using (var stream = File.OpenRead(device.Location))
{
// Read 512 bytes into buffer if possible.  
var readCount = stream.Read(buffer, 0, 512);
StoreData(buffer, readCount); // A method you write to store the data
}
}

相关内容

  • 没有找到相关文章

最新更新