我正在尝试将带有 HTTPWebRequest的大文件(大约 30MB )的字节上传到某个服务器。问题是由于字节大小超过85000,它被存储在LargeObjectHeap ( LOH ) 中。问题是我的代码在 LOH 中创建了至少 5 个相同对象的实例,即使在关闭响应流之后也没有从内存中删除。以下是导致此问题的代码片段。在此代码块之前,LOH 中只有一个文件实例。
using (IO.Stream requestStream = webReqest.GetRequestStream())
{
List<byte> uploadData = new List<byte>();
uploadData.AddRange(Encoding.UTF8.GetBytes(stringContainingHeaderInfo));
uploadData.AddRange(bytesOfTheLargeFile);
byte[] fileFullData = uploadData.ToArray();
requestStream.Write(fileFullData, 0, fileFullData.Length);
requestStream.Close();
uploadData.Clear();
uploadData = null;
fileFullData = null;
fileEntityBytes = null;
using (WebResponse webResponse = webRequest.GetResponse())
{
//Do Something with the response
}
}
有没有办法进一步优化这个代码块,以便在堆中创建更少的副本。