4
當我將文件上載到Azure Blob時,內存消耗似乎相當高。以下數據來自200 MB文件上傳。將文件上傳到Azure Blob時的ASP.NET Core內存消耗
public async Task<IActionResult> PostFile(IFormFile file)
{
var filePath = Path.GetTempFileName();
using (var stream = new FileStream(filePath, FileMode.Create))
{
-> Memory used: 108 MB
await file.CopyToAsync(stream);
-> Memory used: 308 MB
await blockBlob.UploadFromStreamAsync(stream);
-> Memory used: 988 MB
}
}
由於該文件被在流中已經加載,我無法理解在消耗的內存引起UploadFromStreamAsync的急劇增加()。我正在使用Microsoft.WindowsAzure.Storage 8.1.4和.NET Core 1.1。
我做錯了什麼或者是這種預期的行爲?
爲什麼不直接調用'等待blockBlob.UploadFromStreamAsync(file.OpenReadStream())',而不是它第一次寫入文件?假設你使用Windows(對Linux不知道),已知它試圖在將文件寫入磁盤時首先將文件讀入內存 – Tseng
謝謝你的建議。它可以工作,但內存消耗是相同的,只不過它在單次調用中從108 MB到988 MB不等。 – andreasnauta
根據你的描述,我在我的電腦上創建了一個測試演示。我的.net核心版本是1.1,存儲SDK版本是8.1.4。我上傳一個224.5視頻到blob存儲。它只需要243個內存使用量。我無法重述你的問題。你能否創建一個測試演示並給我一個github鏈接來重現你的問題?這是我的代碼鏈接:http://imgur.com/a/0E5zm,這是內存使用鏈接:http://imgur.com/siu5q32 –