メモリ不足になってもエラーにならず戻れる方法

このQ&Aのポイント
  • PictureBoxにBitmapを表示させている際に、拡大するとメモリ不足になることがあります。
  • 通常はメモリ不足が発生するとエラーが発生し、プログラムが停止しますが、メモリ不足になってもエラーにならずに処理を続行する方法があります。
  • 具体的な方法は、try-catch文を使用してメモリ不足の例外をキャッチし、適切な処理を行うことです。
回答を見る
  • ベストアンサー

メモリ不足になってもエラーにならず戻れる方法

 いつも大変お世話になっております。  VB2005でプログラミングしています。  PictureBoxにBitmapを入れて表示させているのですが、それをそのまま拡大していくと(表示されていないところを消さない限りは)いつかはメモリ不足になります。  これまでは、評価した結果でメモリ不足にならない倍率に上限を設定していたのですが、よりメモリが大きいPCならもっと拡大できるはずなので、拡大率の上限を緩和する、というバージョンアップを行うことにしました。  エラーが出たらそれを回避して、そのPCではそれ以上拡大しないようにしたいと思うのですが「メモリ不足」はどこで起こるか言っていでなく、Try~等の命令では網羅できていません。  恐れ入りますが、メモリ不足になってもエラーにならず戻れるよい方法がありましたらご教示いただけますと幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

>表示されていないところを消さない限り 上記をみると、PictureBox.Dispose()をしていないように読めるので、 PictureBoxにイメージがある場合は ・イメージを消す ・新しい領域を描画する の手順を踏まえるべきと考えます。そうでなければメモリ上のイメージが残り続け、どれだけメモリを載せていてもいつかメモリ不足を起こします。 URL:http://dobon.net/vb/bbs/log3-28/17215.html の、下部に解放について記述があります。 また、OutofMemoryExceptionが拾えない状況でしょうか。

Galax01
質問者

お礼

御礼遅くなりまして申しわけありません。 よい情報、助かります。ありがとうございます。 早速明日朝試してみます。

関連するQ&A

  • メモリ不足

    VBで作成したプロジェクトを実行している最中に「メモリが不足しています」というメッセージが表示されてエラーになってしまいます。PCを変えても同じエラーが出てしまいます。 このエラーをなくしたいのですが、メモリ不足となる原因がわからず困っています。どなたか知恵を貸して頂けませんでしょうか。お願いします。

  • これでもメモリ不足になってしまうのでしょうか?

    グーグルクロームで 「エラー このウェブページを表示中に問題が発生しました。」 となる時があるのですが、 原因はメモリ不足との事ですが、 メモリは8GのデスクトップPCを使っていますが これでもメモリ不足になってしまうのでしょうか?

  • パソコンのメモリ不足??

    パソコンでよくメモリ不足のエラーが出て困っています。 パソコンを起動して初めのうちは快適に作動するのですが ずっと使っているとだんだん動きが怪しくなっていきます。 具体的には、動画サイトを開くとout of memory at lineと出たり 動画の部分に灰色の!マークが出て何も表示されなかったり。。 ヤフーのトップページ右上にある広告なども表示されません。 調べるとメモリ不足で起きるエラーらしいのですが 今使っているPCは64bit版でメモリは8GBですので 本当にメモリ不足なのかな??と不思議に思っています。 メモリ不足のエラーの他にも、PCをずっと使っているといきなり IEのホームボタンや更新ボタンの効きが悪くなったり (一度押しても反応せず、何度も押してやっと更新されたりします) IEでインターネットオプションが灰色表示になって開けなかったり 特にIEでインターネットをしているときにエラーがよく起こります。 その証拠に、エラーが出るようになってから別のアプリケーションを 開いて操作しても、メモリ不足で起動できないとかは起こりませんし ワードやメモ帳で文章を保存するときもメモリ不足で保存できません みたいな表示が出ることはありません。 やっぱりメモリ不足とは違うのかな??と感じるのですが。。 原因は何なのでしょうか?? 再起動すれば直りますが、根本的な解決策はないのでしょうか?? お力添えよろしくお願いいたします。 CPU:Core i7-2600 メモリ:8GB OS:Windows7 64bit版

  • niveメモリ不足エラー

    niveで動画を製作していたのですがメモリ不足というエラー画面が表示され、書き出しできなくなってしまいました。 いままでは問題なく書き出していたのでデータ自体には問題ないと思うのですが、今までの製作した動画の仮想ファイルが残っていてメモリに影響を与えていたりするのでしょうか…? メモリ不足解消としてめもりーくりーなー等の使用はしてみたのですが、書き出しを行おうとするとすぐにぐんとメモリがいっぱいになってエラーになってしまうみたいです。 ご教授よろしくおねがいします。

  • エクセルでメモリ不足のエラーが出ます

    エクセルで2つのファイルを開くと「メモリ不足」のエラーが表示されます。 エクセルで作業をするためにファイル(1.86MBのファイル)を開け、続けて別のファイル(1.80MBのファイル)を開くと「メモリ不足」のエラーが表示されます。2つのファイルのシート数は両方とも75シートです。 教えて!gooに登録されている過去の質問を参考にさせていただきましたが解決しませんでした。 ちなみに参考にした回答は次の通りです。 1.そのファイルを別名保存してファイルが開けるか? 2.そのファイル内のシートの倍率を確認。100%以外のシートがある場合は100%に修正してから別名保存してファイルが開けるか? 当方のパソコン環境は次の通りになっています。 OSはWindowsXP HomeEdition SP2 メモリは512MB ソフトのバージョンはExcel2000 対象ファイルのサイズは(A)1.86MBおよび(B)1.80MB 対象ファイルのシート数は両方75 みなさま、宜しくお願いいたします。

  • メモリ不足と表示

    PX-M6011F スキャンデータをいつもPCに保存しています。 その際、メモリ不足のため保存できませんとエラー表示が出て保存できません。 PCは新しいので、メモリ不足とは考えづらいです。 ご教授願います。 ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • 「実行時エラー 3035メモリ不足です」

    アクセスのテーブルを開いてレコードを並び替えようとすると 「メモリ不足です」と表示されます。 VBAで、 DoCmd.RunSQL SQL のコードでも同じように 「実行時エラー 3035メモリ不足です」と言うエラーが発生します。 VBAでエラーになった場合は、 一度エラーでとまりますが、そのままF5を押すと問題なく実行できます。 メモリは4G積んでいます。win7です。 そんなにメモリが低いでしょうか? アクセスのレコード数は40000くらいです。

  • メモリが"read"になることとはできませんでしたとメモリ不足について

    初めて質問させていただきます。ネットゲームをしていると 「"0×0047870f"の命令が"0×00040008"のメモリを参照しました。メモリが"read"になることとはできませんでした。」とか「メモリ不足」の表示が頻繁に出るようになりました。メモリ不足のときは固まってしまいます、同じような質問を検索してみましたが、OS自体に問題があるとかかれていたりで内容がいまいち理解できずいまだに直りません。 そのネットーゲーム以外ではそのような表示が出ることはありません。 お手数ですが、初心者にもわかりやすく修正できる方法を教えてください。パソコンの種類は冨士通CE40S7、2006夏モデルです。

  • メモリ不足

    いつの頃からか、PCを使うとすぐに「メモリ不足」の表示が出るようになりました。不必要なファイルやソフトの削減、適正化などやれることは全てやったのですが、それでも一向にメモリが回復してくれません。何が原因なのでしょうか?

  • Visual Basic 拡大方法について

    こんばんわ Visual Basic 2010を使用してプログラミングをしています。 地図の画像を読み込み、ダブルクリックをすると拡大するというものを組んでいます。 ただ、ダブルクリックすると拡大するところまではできたのですが ダブルクリックしたところがパソコンの画面の中央にくるようにするにはどうすればいいかがわかりません。 方法が分かるかた助言、アドバイスよろしくお願いいたします。 参考までに現在組んでいる拡大部分のコードは以下のようになっています。 パソコンの画面サイズは1200*800です Private Sub PictureBox1_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.DoubleClick Dim bmp = New Bitmap(PictureBox1.Image, PictureBox1.Width * 1.5, PictureBox1.Height * 1.5) PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize PictureBox1.Image = bmp PictureBox1.Refresh() End Sub よろしくお願いいたします。