我正在试图使用HTTPWebRequest将一个大文件(约30MB)的字节上传到某个服务器。问题在于,由于字节数量超过85000,它被存储在大对象堆(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
}
}
有没有办法进一步优化这个代码块,以便在堆中创建更少的拷贝?
byte[]
中? - Damien_The_UnbelieveruploadData.Clear(); uploadData = null; fileFullData = null; fileEntityBytes = null;
没有任何意义。 - John Saunders