【发布时间】:2017-03-23 10:22:36
【问题描述】:
我正在将一些字节写入 MemoryStream。我给它的大小是 100 MB
using (MemoryStream Stream = new MemoryStream())
{
for ( loop 1400 time)
{
func(i, OStream, Stream, );
}
lock (this)
{
Stream.WriteTo(OStream);
}
}
func(i, OStream, Stream)
{
loop 19 times
get buffer;
Stream.Write(buffer, 0, buffer.Length);
}
缓冲区是一个byte[],大小从65536到116454不等。我循环了1000次。
我在 for 循环中编写它,但我得到 OutOfMemoryException 异常。
有没有办法扩展 MemoryStream 并避免异常?
【问题讨论】:
-
将构建模式切换到 x64
-
@middelpat anycpu 应该可以处理...
-
“我循环了 6000 次” - 在哪里?你能显示循环,也许问题就在那里。
100mb在我看来不太像。 -
既然你已经知道要写入更多内容,为什么还要将内存流的容量设置为 100MB?您的设置保证流必须至少扩展其存储一次(如果不是多次),这涉及将其内容复制到新数组。这(简要地)需要的内存是流当前容量的两倍多。
-
更新问题
标签: c# memory-management