我们在应用程序中使用Box oAuth Api将文件下载并上传到我们的Box.com帐户。我能够成功下载和上传最大200 MB的文件。但是当尝试下载大小为3.5 GB的文件时,应用程序没有响应,它占用了大部分RAM使用量( 2,741,900 )。
我手动将文件拉下来,大约需要15分钟,将其从Box中删除,然后重新启动我的下载服务。然后代码咀嚼Box上没有问题的所有堆积文件。虽然,我认为内存的静止状态利用仍然很高(115MB),但它更好。
知道为什么在复制文件时会消耗内存。
这是我们能看到的东西吗?
请帮我解决这个问题。
提前感谢您的时间。
谢谢&问候, Satish.Neelakantam
答案 0 :(得分:2)
问题在于WebClient.DownloadFile,而不是Box API。考虑切换到stream-based solution。
修改强>
除了使用流之外,您还可以考虑对文件/ ID /内容的请求将始终导致 302 Found 重定向到特定的下载URL。此URL将接受 Range 标头,您可以使用该标头指定要获取的特定字节范围。这样可以恢复失败的下载。请注意,下载URL不是静态的,因此您应在每次 Range 读取操作之前调用文件/ ID /内容,以确保您的下载URL有效。