保存しようとしたら...何じゃこりゃ?!

タグの編集
投稿者 Knyacky  (中学生) 投稿日時 2009/8/10 20:52:26
OS:Windows XP SP3
環境:Express Edition

結構でかいゲームを作っているのですが、(フォームはだいたい15個)リソースに3分程度のWAVファイル2個を入れて、保存したら、

"System.OutOfMemory(だったっけ?)の例外がスローされました。"
.....?!

その後もう一度試したら(VB2008以外のすべてのアプリを終了させて).....

先ほどのエラーメッセージが出てきて、あきらめようと考え、OKを押したら.....
あのメッセージボックスが出続ける無限ループに.....orz
何じゃこりゃ?

何が原因か教えてください!!
投稿者 トマト  (小学生) 投稿日時 2009/8/10 20:55:24
関係ないアプリを全部停止させてから試してみてください。
投稿者 Knyacky  (中学生) 投稿日時 2009/8/10 20:57:27
あの.....そういうのはすべて終了させてためしましたけど...
投稿者 トマト  (小学生) 投稿日時 2009/8/10 21:15:41
なら、メモリーの増築ぐらいしかなさそうですね。
投稿者 るきお  (社会人) 投稿日時 2009/8/10 22:00:23
こんにちは。
今Express Editionが手元にないので細かい所で表現が違うかもしれません。

確認させてください。
1.まず、作成中のプロジェクトを開いて
2.[ファイル]メニューの[保存]を押すと、
3.保存に失敗してメッセージが表示される。
ということで正しいですか?

3で表示されているメッセージは正確ではないけれども
>"System.OutOfMemory(だったっけ?)の例外がスローされました。"
のようなもだったということですね?

まずはこの正確なメッセージを教えてください。

それから、本当にパソコンの搭載メモリ量が足りなくて保存ができないということは考えにくいと思っているのですが、一時的にメモリ空き容量を増やす方法ならこまごました方法がいろいろあります。
そのエラーがでるときのメモリの使用状況はどうなっていますか?
タスクマネージャ([Ctrl] + [Shift] + [Esc]で表示)で、メモリ量のグラフは80%、90%などの
高い値になっていますか?

投稿者 Knyacky  (中学生) 投稿日時 2009/8/10 23:09:20
CPUがパンク寸前!!...なんてことではないのです。

>1.まず、作成中のプロジェクトを開いて
>2.[ファイル]メニューの[保存]を押すと、
>3.保存に失敗してメッセージが表示される。
>ということで正しいですか?

 はい。ツールバーでもショートカットでも同じです。

一時的にポインタが砂時計になって"System.OutOfMemoryの例外がスローされました。"とでます。
投稿者 るきお  (社会人) 投稿日時 2009/8/11 05:47:32
CPUではなく、メモリのほうです。

とはいえ、そんなにメモリが逼迫する状況も考えにくいなと思ってはいたのですが、
別の投稿を見ると、
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9266

KnyackyさんはMac上でWindowsを動かされているようですね。
そうすると割り当てたメモリ量によっては本当にメモリが足りないのかもしれません。

それにしては"System.OutOfMemoryの例外がスローされました。"というのが少し解せないのです。
これは.NET Frameworkの例外ですが、VB開発環境はC++でプログラムされているので、
保存しようとしたときにメモリが足りないとしてもこのような例外は出ないではないかと思っていました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/8/11 18:49:59
>> 一時的にポインタが砂時計になって"System.OutOfMemoryの例外がスローされました。"とでます。 
『System.OutOfMemoryException の例外がスローされました。』ではありませんでしたか?


> これは.NET Frameworkの例外ですが、VB開発環境はC++でプログラムされているので、
> 保存しようとしたときにメモリが足りないとしてもこのような例外は出ないではないかと思っていました。 
保存時に出た事はありませんが、Visual Studio 2005/2008 での開発において、
 ・フォーム デザイナを開こうとしたとき。
 ・TableAdapter 編集時。
 ・コンパイル中。
に、OutOfMemoryException が出て、処理を続行できなくなった事は何回かあります。

ただ、当時作成していたアプリは、1 つのソリューション内に、12 個のプロジェクトを含むという、
やや大きめのアプリという事もあり、コンパイル時に 1.5 GB 程度のメモリが消費されていました。
それゆえ、一時的にメモリ不足に陥っていた事はあったかも知れません(PC 自体は 2GB のメモリを搭載)。

# DLL プロジェクト×10、XML Web サービス×1、Windows Forms プロジェクト×1 (総フォーム数 183個)。



今回はフォーム数が 15 個程度という事なので、特にメモリ上の問題は無いと思いますが、
もしかしたら、埋め込まれたリソースに何か問題が生じているのかもしれません。

今のソースを別フォルダにバックアップしておいた上で、各種リソースを削除して、
プロジェクトを再構築してみては如何でしょう。


なお、この手の原因不明の問題が発生した場合、当方では
 ・フォーム デザイナ編集時
  (対策1)*.designer.vb/*.designer.cs から、未使用変数などのゴミ情報を除去することで修復。
  (対策2)Team Foundation からエラー発生前のソースに復元して回避。
 ・TableAdapter 編集時。
  (対策3)*.xsd ファイル内の XML を直接編集して対応。
 ・コンパイル時。
  (対策4)Visual Studio 再起動で大抵解決。それで駄目なら OS から再起動で改善。
などで、今のところ対応できています。
投稿者 Knyacky  (中学生) 投稿日時 2009/8/11 20:39:02
>『System.OutOfMemoryException の例外がスローされました。』ではありませんでしたか?

そうでした。またExceptionを見落としてしまった!

魔界の仮面弁士さんのいうとおりにやってみた所、
>(対策4)Visual Studio 再起動で大抵解決。それで駄目なら OS から再起動で改善。

でうまく行きました。MacにWindowsを入れていて、よくサスペンドしているのでその方法は気づきませんでした。