我的程序使用了过多的内存。我正在尝试读取程序的前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
,所以它只加载一个文件。
我似乎找不出它占用这么多内存的原因。如有任何帮助,我们将不胜感激。
Devices
是IStorageDevice
s的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
}
}