我有一个函数uploadfile()
,在这个函数中我以块的形式上传文件:
Stream writer = request.GetRequestStream();
byte[] bufferUploadSize = new byte[4096];//ex.
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
int bytesRead = 0;
while ((bytesRead = fileStream.Read(bufferUploadSize,0, bufferUploadSize.Length)) != 0)
{
writer.Write(bufferUploadSize, 0, bytesRead);
}
fileStream.Close();
我做到了没有错误,但当我在Windows任务管理器中观看我的程序时,我意识到我的程序使用的内存增加,直到文件大小。例如,当我上传1GB文件时,内存会逐渐增加,直到1GB。为什么呢?
我可以更改代码使用,例如,40KB而不是1GB RAM吗?
答案 0 :(得分:3)
尝试设置request.AllowWriteStreamBuffering = false;
以下是MSDN文档:HttpWebRequest.AllowWriteStreamBuffering Property
这是该页面的注释:
将AllowWriteStreamBuffering设置为true可能会导致性能下降 上传大型数据集时出现问题,因为数据缓冲区可以 使用所有可用内存。