我有一个列表,我在其中阅读和存储大量文本。此列表不断向其添加更多字符串。一段时间后,此列表可能会花费高达几 GB 的 RAM。
同时我有一个线程从第一个索引开始读取列表或数组,然后处理它。
for(i=0;;i++)
{
string a = array[i]
Process(a)
}
而且我想知道是否有可能例如清除前 1000 个字符串而不会丢失计数或索引。这样,上述循环仍然可以工作而不会丢失索引,但同时释放内存。是否可以仅删除数组的一部分?
我有一个列表,我在其中阅读和存储大量文本。此列表不断向其添加更多字符串。一段时间后,此列表可能会花费高达几 GB 的 RAM。
同时我有一个线程从第一个索引开始读取列表或数组,然后处理它。
for(i=0;;i++)
{
string a = array[i]
Process(a)
}
而且我想知道是否有可能例如清除前 1000 个字符串而不会丢失计数或索引。这样,上述循环仍然可以工作而不会丢失索引,但同时释放内存。是否可以仅删除数组的一部分?
这里的理想方法是不使用数组,而是使用可以遍历的“迭代器”,随时收集项目,而不是一次收集所有数组项目然后处理它们。 请参阅此处作为良好的入门参考。这种方法的另一个好处是,它使您能够更好地使用Parallel.ForEach使您的代码成为多线程