这个问题是一个跟进有效的方式,许多二进制文件转移到SQL Server数据库
本来我问为什么用File.ReadAllBytes
是导致快速的内存使用,它是用这种方法把对大对象堆无法在运行时很容易回收的数据得出的结论。
我现在的问题是,如何避免这种情况?
using (var fs = new FileStream(path, FileMode.Open))
{
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, bytesRead);
}
return new CustomFile { FileValue = ms.ToArray() };
}
}
下面的代码的目的是通过在块,而不是所有的阅读文件一下子得到解决此问题,但它似乎有同样的问题。