は、そのままで、私はだろうが、とにかくコードを書き換えるための機会を与えられました。List <string>でOutOfMemoryExceptionが発生しました - これが限界ですか、何か不足していますか?</p> <pre><code>List<string> foobar; </code></pre> <p>をその後、我々はfoobarのに文字列の束を追加します:
count = 16777216で、メモリ不足の上限に達しました。
私の理解は、各文字列が異なるサイズであるということです。実際にデータ(私のデータではない)を見ると、ほとんどが2文字または3文字です。 - ちょうど 億2上
リストの現在 実装に格納することができる要素の最大数は、理論的には、Int32.MaxValueをある:
what is the max limit of data into list in c#?は最大限界があることを示しています。しかし
:2GB 最大オブジェクトサイズの制限がありますCLRの現在のMicrosoftの実装では
。 (これは、他の実装は、 は、たとえばモノのために、この制限を持っていない可能性があります。)私の例では
、私は持っているが、何を、1600万結果は数バイトを*?タスクマネージャーはギグが使用されていることを示していますが、私は8ギガのRAMを持っています。
16777216(2^24)はかなり限定的だと思われます。疑いの余地はありますが、どこにもドキュメンテーションがありません。これをバックアップしてください。
ご協力いただければ幸いです。
いくつかのコード:
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を持っているが、これは私の悲しみを与えている実際のコードです。
あなたのコードを表示できますか? –
ヒープサイズはRAMサイズと異なり、RAMの一部はヒープとして使用され、オブジェクトの格納に使用されます。 http://stackoverflow.com/questions/2325370/c-sharp-increase-heap-size-is-it-posable – CjCoax
@JonSkeet - 一部のスニペットで更新されました。他に必要なものがあれば教えてください。 –