fileStream指向磁盘文件,他的长短是操作系统控制文件分配表来控制的的。可memoryStream得长短是怎样控制的? 如果内容长度超过Capacity值, 具体是怎样分配的?  重新再划分一块大内存空间?那效率是不是也太低了。

解决方案 »

  1.   

    Reflector
    反编译看看源码。太多不贴了。
      

  2.   

    哦,谢谢了. 和stringBuilder的机制一样。 那扩容的时候还是要重新分配一块内存进行复制,大块内容的改写效率还是很低。
      

  3.   

    效率低不低看你是不是找对了合适的类型。MemoryStream的设计就决定了它只能用于一些特定情况。如果你的应用场景用它不适合,你应该看看有没有其他合适的类型。
      

  4.   

    比方说从网络端接受文件,文件的大小开始接受的时候并不知道,直道\0才结束, 但是由于效率的问题又不能直接写到磁盘上, 这时候用什么流? 好像也只能是memoyStream吧。  文件如果稍大点,这样效率就太低了。
      

  5.   

    原来试过400m左右的文件, 直接就内存用完,报OutOfMemoryException异常了。 2g的内存
      

  6.   

    别听课了,呵呵.直接给分.不过还是希望能有有力的证据,msdn上并没有说明。
      

  7.   

    OutOfMemoryException的原因很多,但是如果文件真的很大,使用MemoryStream自然就不对,一般都应该直接写到文件里面去了。你看看迅雷之类哪个在内存里面放文件的,各个都是使用磁盘文件。