書き直す機会があれば、書き直しますが、とにかく、現状のコードは次のとおりです。
List<string> foobar;
次に、foobar に一連の文字列を追加します。
count=16777216 で、メモリ不足の制限に達しました。
私の理解では、各文字列は異なるサイズになるということです。確かにデータ(私のデータではありません)を見ると、ほとんどが2文字か3文字です。
c#のリストへのデータの最大制限は何ですか? 最大制限が次のとおりであることを示します。
List の現在の実装に格納できる要素の最大数は、理論的には Int32.MaxValue - 20 億強です。
でも:
CLR の現在の Microsoft 実装では、2 GB の最大オブジェクト サイズ制限があります。(Mono などの他の実装には、この制限がない可能性があります。)
私の例では、1,600 万の結果 * 数バイトですか? タスク マネージャーはギグが使用されていることを示していますが、RAM は 8 ギガあります。
16777216 (2^24) はかなり具体的な値のようです-疑わしい制限のようですが、a)これをバックアップするか、b)それを回避する方法を見つけるためのドキュメントがどこにも見つかりませんか?
どんな助けでも大歓迎です。
いくつかのコード:
List<string> returnList = new List<string>();
SqlDataReader dr; // executes a read on a database, have removed that part as that bit works fine
if (dr.HasRows)
{
while (dr.Read())
{
returnList.Add(dr.GetString(0).Trim());
}
}
これは単純化された形式です。OOM 例外の try/catch がいくつかありますが、これが実際のコードであり、私を悩ませています。