我想将一个文件base64string
读入流中作为一个并且我使用下面的代码来读取文件,但是当我看到内存使用量超过900MB时,我通过任务管理器监视它.我错过了什么,我可以看到当我将其读入字符串时,内存使用率会上升,(我已经使用了150 MB的文件来测试它).
stringBuilder Sb= new stringBuilder (); using (var fs = new FileStream(@"C:\Users\Sanath Kumar\Desktop\s.pdf", FileMode.Open, FileAccess.Read)) { var buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); Sb.Append(Convert.ToBase64String(buffer)); buffer = null; fs.Flush(); fs.Dispose(); }
JaredPar.. 5
这里的问题是你正在将文件全部读入内存并多次复制数据.
该byte[]
阵列
在StringBuilder
其中有一个char[]
背衬阵列
如果此文件的大小很大,这肯定会导致内存峰值.
而不是一次性阅读全部尝试使用ToBase64Transform
该类.这旨在与Stream
输入一起使用,并且将避免一次将整个文件加载到内存中.相反,它将以块的形式处理它.
这里的问题是你正在将文件全部读入内存并多次复制数据.
该byte[]
阵列
在StringBuilder
其中有一个char[]
背衬阵列
如果此文件的大小很大,这肯定会导致内存峰值.
而不是一次性阅读全部尝试使用ToBase64Transform
该类.这旨在与Stream
输入一起使用,并且将避免一次将整个文件加载到内存中.相反,它将以块的形式处理它.