c# – 一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1146字,纯文字阅读大概需要2分钟。
内容图文
![c# – 一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?](/upload/InfoBanner/zyjiaocheng/962/464dd221415b4b2e9513ecc391f9bd92.jpg)
我正在构建一个允许用户从URL下载文件的库.我正在考虑的一个选项是让用户为文件指定预期的MD5校验和;库的GetFile(string url)函数确保下载的流的校验和与用户指定的校验和匹配.
知道HttpWebResponse.GetResponseStream()返回的NetworkStream是不可寻的,我找到了一种复制流的方法,这要归功于这个问题的答案:How can I read an Http response stream twice in C#?.在我走得更远之前,我想弄清楚内存含义是什么这种重复将是;不幸的是,Google和MSDN上的多次搜索都化为乌有.
该库对要下载的文件的大小没有限制.我的问题是,如果用户选择2GB文件,.NET 2.0中的MemoryStream实现是否足够智能,足以有效地使用PageFile和RAM,系统不会因VM崩溃而开始爬行?此外,Jon Skeet对另一个问题的评论给了我一些思考 – 他断言即使在处理了MemoryStream后,内存也不是100%免费的.我如何以及何时确保实际释放内存?它会根据系统的要求(和必要性)发布吗?
谢谢,
马诺
解决方法:
你将它保存到文件中,对吧?为什么不按块保存块,随时更新哈希,然后只检查最后的哈希值?我认为您不需要两次读取响应,也不需要缓冲它.正如另一个答案指出的那样,无论如何当你超过1GB时,这将失败.
不要忘记它以及MemoryStream的当前大小,任何时候它必须增长,你最终会(暂时)结束新数组加上内存中的旧数组.当然,如果您事先知道内容长度,这不会是一个问题,但是将它写入磁盘和散列仍然会更好.
内容总结
以上是互联网集市为您收集整理的c# – 一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?全部内容,希望文章能够帮你解决c# – 一个大的System.IO.MemoryStream会导致我的应用程序的内存使用量急剧增加吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。