1

大量のテキストを読んで保存するリストがあります。このリストには、継続的に文字列が追加されます。このリストは、しばらくすると最大で数 GB の RAM を消費する可能性があります。

同時に、最初のインデックスから始まるリストまたは配列を読み取り、それを処理するスレッドがあります。

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

たとえば、カウントやインデックスを失うことなく、最初の 1000 個の文字列をクリアすることが可能かどうか疑問に思います。そうすれば、上記のループはインデックスを失うことなく引き続き機能しますが、同時にメモリを解放します。配列の一部だけを削除することはできますか?

4

1 に答える 1

1

ここでの理想的なアプローチは、配列を使用するのではなく、代わりに foreach できる「反復子」を使用して、すべての配列項目を一度に収集してから処理するのではなく、好きなように項目を収集することです。 ここを参考にしてくださいこのアプローチのもう 1 つの利点は、 Parallel.ForEachを使用してコードをマルチスレッド化するのに有利になることです。

于 2013-11-09T03:25:24.923 に答える