c# - 将文件上传到 Azure Blob 时的 ASP.NET Core 内存消耗

标签 c# azure asp.net-core azure-storage azure-blob-storage

当我将文件上传到 Azure Blob 时,内存消耗似乎相当高。以下数据来自上传的 200 MB 文件。

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。

我做错了什么还是这是预期的行为?

最佳答案

我的测试应用程序是MVC应用程序,因此只需要243内存使用量。

Web api 应用程序与 MVC 应用程序内存使用情况不同。

我的 Web api 应用程序使用量为 1G,如下图所示:

enter image description here

Am I doing anything wrong or is this expected behavior?

这是预期的行为。

我建议您可以使用快照来查看堆大小变化信息。

可以看到堆大小已释放,但内存使用量仍为 1G。

enter image description here

关于c# - 将文件上传到 Azure Blob 时的 ASP.NET Core 内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546073/

相关文章:

asp.net - 如何更改 asp.net core 1 中的 token 响应?

asp.net-core - Entity Framework 核心 : How to test navigation propery loading when use in-memory datastore

c# - 防止 ServiceContractGenerator 生成消息契约(请求/响应包装器)

c# - 如何在 .NET 中卡住冰棒(使类不可变)

c# - 使用命名管道的 C++ 和 C# 通信

c# - Azure SQL 连接的安全性如何?

azure - 我可以自动扩大/缩小 Azure 应用服务计划吗?

php - 使用 Vue Js 和 Azure Pipeline 实现 Azure Key Vault 的最佳方法

asp.net-mvc - 在 Tag Helper 中获取属性名称

c# - .Net IP 地址 IPv4