【问题标题】:Azure Blob Storage: CloudBlockBlob.DownloadToStream throws OutOfMemory exceptionAzure Blob 存储:CloudBlockBlob.DownloadToStream 引发 OutOfMemory 异常
【发布时间】:2014-06-07 16:04:57
【问题描述】:

这发生在我的 Azure 存储模拟器上(还没有在真正的 Azure 存储上尝试过)。我正在将文件保存到 Blob 存储。我对较小的文件没有任何问题(例如 = 114 MB),我可以毫无错误地上传文件,但在尝试下载时出现内存不足异常。

    public Stream GetStream(string fileName)
    {
        var blob = GetCloudBlobContainer().GetBlockBlobReference(fileName);
        if (blob.Exists())
        {
            Stream stream = new MemoryStream();
            blob.DownloadToStream(stream);
            return stream;
        }
        return null;
    }

调用 blob.DownloadToStream(stream) 时抛出异常。

如何解决这个问题?

更新: 好的,我找到了适合我的情况的解决方法。我可以使用 blob.DownloadToFile() 将其直接保存到本地文件(无论如何我都需要它),而不是返回流,这工作正常。但是,我仍然有兴趣找到解决此问题的方法。

【问题讨论】:

    标签: azure-storage azure-blob-storage


    【解决方案1】:

    MemoryStream 将所有数据存储在内存中。 DownloadToFile 对您有用的事实意味着您的计算机在尝试将 blob 存储在内存中时可能内存不足。 至于上传,如果您直接从文件系统上的文件上传到 blob,我们不会将整个文件加载到内存中,因此您不会遇到与下载相同的问题。

    【讨论】:

    • 我接受了这个答案。但是,我不相信我的机器内存不足,无法容纳只有 114 MB 的文件。
    【解决方案2】:

    除了上面 Vinay 的回答,我建议您交替打开 Windows 任务管理器上的“性能”和“进程”选项卡,以在下载时监控内存使用情况。

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 1970-01-01
      • 2015-01-27
      • 2021-01-24
      • 1970-01-01
      • 2015-04-29
      • 2017-04-18
      • 2022-01-21
      • 1970-01-01
      相关资源
      最近更新 更多