2017-02-16 7 views
-4

ループでは、List<string>に100万の文字列(ほとんど2〜3文字)を追加しています。すべての反復の最後に、文字列リストがクリアされます。反復の大半は問題なく行われます。しかし、ある特定の反復では、文字列リストにはOutOfMemoryExceptionが含まれていますが、その中には700,000文字列の要素しかありません。なぜこのようなことが起きるのか、それをどう解決するのか分かりません。誰も助けることができますか? MSDNからリスト<string>はC#でOutOfMemoryExceptionをスローします

詳細:あなたが見るために人々のために任意のコードを提供してhaventので

+3

いくつかのコード例はどうですか? –

+1

[C#:Out of Memory exception]の重複している可能性があります(http://stackoverflow.com/questions/8563933/c-sharp-out-of-memory-exception) – EJoshuaS

答えて

1

、それを特定することは困難だろうが、しかし、これはOutOfMemoryException例外の原因(複数可)です。

  • StringBuilderオブジェクトを、StringBuilder.MaxCapacityプロパティで定義された長さを超えて拡張しようとしています。

  • 共通言語ランタイムは、操作を正常に実行するために十分な連続したメモリを割り当てることができません。この例外は、メモリ割り当てが必要なプロパティの割り当てやメソッド呼び出しによってスローされます。

OutOfMemoryException例外の原因の詳細については、https://blogs.msdn.microsoft.com/ericlippert/2009/06/08/out-of-memory-does-not-refer-to-physical-memory/を参照してください。

0

これは、リストの理論上の最大サイズよりはるかに小さいはずです。ただし、Listクラスは配列を基になるストアとして使用するため、すべてを連続したメモリ位置に格納します。メモリが非常に断片化している場合は、連続したメモリ位置が不十分である可能性があります。

関連する問題