我正在研究c#.我想知道如何释放stringbuilder n byte [] ....因为我在使用字符串生成器时遇到了内存异常....另一件事是String.Replace()也给出了内存不足异常或者还有其他方法可以做同样的事情....请告诉我如何克服这些问题...提前感谢
你要建造多大的绳子?你知道前期会有多大吗?如果是这样,请设置 StringBuilder 的容量。
如果您不这样做,它会以 16 的容量开始,然后在每次突破该限制时将其加倍。容量将为 16、32、64、128。
每次执行此操作时,可能都需要重新分配内存。
如果数据那么大,将其构建在文件流中而不是 StringBuilder 中是否更好?
如果您正在获得OOM,那么您需要保留太多数据.这听起来像你对我也许应该使用TextWriter(更换StringBuilder)或BinaryWriter/ Stream(更换byte[]) -尤其是StreamWriter和FileStream(其写入文件).
例如:
using (TextWriter dest = File.CreateText("out.txt"))
{
for (int i = 0; i < 100000; i++)
{
dest.Write(i);
dest.Write(": ");
dest.WriteLine(i % 5000); // why not
}
}
Run Code Online (Sandbox Code Playgroud)
像这样的基于流的API的优点是,一旦你编写了一个数据块,它就可以被垃圾收集等.
| 归档时间: |
|
| 查看次数: |
4476 次 |
| 最近记录: |