使用太多内存读取文件流

 迷路的小孩w 发布于 2023-02-06 12:04

我想将一个文件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输入一起使用,并且将避免一次将整个文件加载到内存中.相反,它将以块的形式处理它.

1 个回答
  • 这里的问题是你正在将文件全部读入内存并多次复制数据.

    byte[]阵列

    StringBuilder其中有一个char[]背衬阵列

    如果此文件的大小很大,这肯定会导致内存峰值.

    而不是一次性阅读全部尝试使用ToBase64Transform该类.这旨在与Stream输入一起使用,并且将避免一次将整个文件加载到内存中.相反,它将以块的形式处理它.

    2023-02-06 12:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有