OutOfMemoryException について
初級者向けにおさらいします。
目次
この例外エラーの説明
プログラムが、使用できる空きメモリをどんどん確保して使っていって、最終的に、Out Of Memory(メモリを使い切ってしまうと発生する)Exception です。
事例とその対処方法
例外エラーは、想定外の扱われ方をすると発生して飛んで来ます。それは命令の使い方が間違っていたり、存在しないデータを扱おうとしていたり、アカウント権限を越えたアクセスをしようとしていたり(Windows 側やウェブ側の話だったり)、サービスが動いていないのに連携しようとしたり、製品上の仕様考慮モレだったり、そういう系です。
こうなっている前提のはずだから、こうやろうとしたのに、実際はここがこうなっているからダメじゃん!こういう場合の処理が無いじゃん!みたいなコードになっていませんか?
String
発生頻度が高いのは、String 変数を扱った大量の文字列処理です。通常は、大量の文字列操作をしたい場合は、String の代わりに、System.Text.StringBuilder を使います。手っ取り早くメモリを使い切るため無限再帰処理としてコードを設計しましたが、String であってもたいていはメモリ不足にはならないはずです。
Private Sub GetData(s As String) GetData(s & s) End Sub Sub Main() GetData("hello") Console.ReadKey() End Sub
System.OutOfMemoryException: '種類 'System.OutOfMemoryException' の例外がスローされました。'
メモリは共有物ですのでエコなアプリの方がいいですが、中にはパワーが必要なアプリもあります。大量にメモリを使用することは悪いことではありませんが、使い過ぎには注意ですね。