2

関数が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 までメモリが少しずつ増えます。なんで?

たとえば、1GB RAM の代わりに 40KB だけを使用するようにコードを変更できますか?

4

1 に答える 1

3

設定してみるrequest.AllowWriteStreamBuffering = false;

これに関する MSDN ドキュメントは次のとおりです。 HttpWebRequest.AllowWriteStreamBuffering プロパティ

そのページからのメモは次のとおりです。

AllowWriteStreamBuffering を true に設定すると、データ バッファーが使用可能なすべてのメモリを使用する可能性があるため、大規模なデータセットをアップロードするときにパフォーマンスの問題が発生する可能性があります。

于 2013-11-06T18:57:57.397 に答える