我有一个列表,我在其中阅读并存储大量文本。此列表不断添加更多字符串。一段时间后,此列表可能会花费几GB的RAM。
同时我有一个线程从第一个索引开始读取列表或数组,然后处理它。
for(i=0;;i++)
{
string a = array[i]
Process(a)
}
我想知道是否有可能在不丢失计数或索引的情况下清除前1000个字符串。这样,上面的循环仍然可以在不丢失索引的情况下工作,但同时释放内存。是否可以只删除数组的一部分?
答案 0 :(得分:1)
这里理想的方法是不使用数组,而是使用'iterator',你可以预先收集,收集项目,而不是一次收集所有数组项,然后处理它们。 See here as a good starting reference。这种方法的另一个好处是,通过使用Parallel.ForEach
,它可以让您更好地使代码成为多线程