【发布时间】:2015-01-23 08:05:44
【问题描述】:
我有一个来自 WebService 的输入字符串,格式为大约 70 MB 大的 base64 编码字符串。
我想将它解码成一个文件,并尝试了显而易见的方法:使用Convert.FromBase64String()。
然而,这会产生一个OutOfMemoryException。经过一番阅读,我发现Convert方法与Base64有关
内存泄漏(无疑是由于字符串的不可变特性和框架方法内部的一些糟糕设计) source
System.Security.Cryptography 命名空间中有一个方便的“流式”替换:FromBase64Transform。
所以,我决定试一试,但我需要在方法中输入一个 bytes 的数组,而我没有 - 我有一个字符串。
我怎样才能将我拥有的string 转换为bytes 而不会在那个 转换中再次遇到另一个OutOfMemoryException?
【问题讨论】:
-
大对象堆是出了名的知之甚少。今天没有什么理由不在 64 位操作系统上运行 Web 服务。标准错误是忘记删除强制抖动,项目+属性,编译选项卡。
标签: c# base64 out-of-memory