VB-Studdioを2003年版から2008年版に変えたのですが、時々、「OutOfMemoryExceptionはハンドルされませんでした」というエラーが発生します。今までこのようなエラーは発生した事はありません。エラーを起こす場所は分かっていますが、再現性を捕えられなくて弱っています。
エラーを起こす所は、下記の所で
Public Sub Memo(Byval Comment as String)
Document=Document & Comment
End Sub
上記の、Documentは、 Public Document as String で、別途定義しております。
Memo(***)は、プログラムの途中かなりの頻度でCallされ、
エラーを起こした時Documentの内容を見ると、いつも文字数およそ5〜6万字ぐらいになっています。
エラーメッセージのトラブルシューティングのヒントの詳細に下記の記述があります
(1)大容量のデータセットをメモリに読み込んだ。
(2)多数のキャシュエントリを作成した。
(3)大きなファイルをアップロードまたはダウンロードした。
(4)ファイルの解析時に正規表現または文字列を過度に使用した。
(5)過度のビューステート。
(6)セッション状態のデータが多すぎる。またはセッション数が多すぎる。
質問-1
上記の(1)、(3)が疑わしいのですが、通常はDocumentが10万字以上になっても問題は起こりません。
しかし、エラーが起こる時はいつも、Documentが数万字になっているので、なんらかの原因で、
Documentに割り当てられているメモリサイズをオーバーしてしまうのかなと思っているので、
Public Document as String
の宣言で、Documentに割り当てるメモリサイズを積極的に大きくする事は出来ないのでしょうか?
質問-2
(2)キャッシュエントリ、(4)正規表現、(5)ビューステート の意味が分からないので、教えて下さい。
質問-3
プログラム開発用のパソコンは、インターネットと切り離しているので(6)は問題外と考えてよいでしょうか?
或いは、パソコンが勝手に、セッションを張ろうとするようなことは心配しなくてよいでしょうか?
以上、この様な質問がこの欄で許されるのかやや心配なのですが、宜しくお願いします
エラー(例外)が発生する場所は、Public Sub Memoのところですか?
それとも他のところですか?
これだけではDocument変数に関するメモリ不足が問題なのかどうか分かりません。
(多分ここではないんじゃないの?)
質問-2については、自分で調べたほうがいいのでは。
検索すればすく見つかるし、そのほうが欲しい情報を得られる。
その前に さん、 あ さん ご返事ありがとうございます
単純に、String 変数 に割り当てるメモリーサイズを増やすことができないかという質問にとどめておけばよかったのに、困っていたので、つい余計な事まで説明したり、お尋ねしてしまいました。
メモリーサイズを増やすことはきそうもないと思いますので、質問を取り消します。
ツイート | ![]() |