【发布时间】:2014-06-21 17:30:42
【问题描述】:
我想将 zip 文件解码为 base64 字符串。文件可以达到 100 MB 并获得 OutOfMemory 异常并重新启动 Visual Studio。我的编码:
public static string EncodeToBase64(string zipPath)
{
using (FileStream fs = new FileStream(zipPath, FileMode.Open, FileAccess.Read))
{
byte[] filebytes = new byte[fs.Length];
fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
return Convert.ToBase64String(filebytes);
}
}
我能做些什么来解决它?
【问题讨论】:
-
100 MB 应该不是问题。你的内存满了吗?您还需要“代码中”的 base64 字符串还是将其保存/发送到某个地方?
-
100MB 如果您一次又一次地这样做很容易成为问题
-
我有很多内存不足,但在编码为 base64 时 RAM 会迅速增加。我用于保存和发送的 base64 字符串
-
在一个 32 位程序运行了一段时间并有机会分割地址空间(与 RAM 无关)后,分配 90 MB 很容易失败。早在程序真正内存不足之前,就没有留下足够大的孔来容纳分配。否则,通过允许您的程序作为 64 位进程运行,在 C# 中可以轻松解决的问题。