1

我有一个列表,我在其中阅读和存储大量文本。此列表不断向其添加更多字符串。一段时间后,此列表可能会花费高达几 GB 的 RAM。

同时我有一个线程从第一个索引开始读取列表或数组,然后处理它。

for(i=0;;i++)
{
     string a = array[i]
     Process(a)
}

而且我想知道是否有可能例如清除前 1000 个字符串而不会丢失计数或索引。这样,上述循环仍然可以工作而不会丢失索引,但同时释放内存。是否可以仅删除数组的一部分?

4

1 回答 1

1

这里的理想方法是不使用数组,而是使用可以遍历的“迭代器”,随时收集项目,而不是一次收集所有数组项目然后处理它们。 请参阅此处作为良好的入门参考。这种方法的另一个好处是,它使您能够更好地使用Parallel.ForEach使您的代码成为多线程

于 2013-11-09T03:25:24.923 回答