• ベストアンサー

メモリーリーク

最近、メモリーリークエラーが出るんですが、何で出るんでしょうか? 対策法とかないんでしょうか? メモリーリークが起こると、再起動しないといけないみたいで面倒です。 最悪いくつまでメモリが返されないと不安定になったり動かなくなったりするんでしょうか? 僕のは最近は4つエラーが出ます。 宜しくお願いします。

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

  • ベストアンサー
  • rex55
  • ベストアンサー率44% (116/258)
回答No.1

メモリ・リークはアプリケーションソフトが OS から借り受けたコンベンショナル・メモリを自己の配下で正しくハンドリングしていないことで発生する不具合です。 メモリ・リークが発生するようになる直前にインストールしたソフトウェアに思い当たる点はありませんか? メモリ・リークによって動作不安定になる限界点は、ご使用中の PC のハードウェア構成、起動中のアプリケーションソフト、稼動中のサービスの数と負荷など、様々な要因で変動しますので、一概に「これだけの数値で NG」と言う線引きは出来ません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メモリーリークエラーが起こる

    メモリーリークエラーが起こるのですが、理由はなんなんでしょう? よく起こるのは、プログラムをコンパイルしたり実行したりしたときになるような気がするんですが、なんでリークエラーが起こるんでしょうか? 解決法とかありませんか?どなたか宜しくお願いします。

  • こういうのはメモリーリークに該当しますか?

    0.9x時代から、ながいことMozilla Suiteを愛用しています。 ところで、ながいこと、Mozillaで困った現象が「どうやら私の環境だけで?」発生します。 画像数の多いホームページを見たり、写真が添付されたメールが続いたりすると、システムの空きメモリーがぐんぐん減ります。 で、画像のないホームページへリンクで移ったり、メールの写真整理が終わって、何時間経っても減ったメモリーが元に戻りません。 Mozillaが起動しているあいだじゅうはキャッシュのつもりで保持されるのかなあ?とも思って、Mozillaを一旦クローズしてみました。 一旦クローズすると、消費メモリーが戻るには戻るのですが、たいがいは半分程度しか戻ってくれません。 (100回に1、2度の割り合いで、ごっそり元通りにメモリーが回復することもたまにあります) 半分しか戻らないメモリーで、再度Mozillaを起動して使っていると、すぐにメモリーは使い切ってしまい、システムが不安定になります。 (多分本当なら、スワップされてシステム不安定は回避される建て前のはずだと思うんですが) あんまり気になるので、Bugzillaに報告をしてみましたが、書き方が不適切でとんちんかんだったのだと思います、全然誰にも相手にして貰えませんでした。 (;;) 私はプログラミングのことがまだよくわからないので、いろいろな「又聞き」でメモリーリークなのかと思い込んでいたのですが、このような現象のことは、何と言えばよいでしょうか?

  • メモリリークを調べています。

    メモリリークを調べています。 MFC(VC2005)です。 MFC拡張DLLで作成したアプリケーションにメモリリークがないかを調査し始めたのですが、VisualStudioでデバッグでは 「Detected memory leaks!」は出ません。 パフォーマンスモニタで、このDLLを静的リンクしたEXEのPrivateByteを約90時間監視すると、2回だけ大きな上昇(といっても数10KB)が見られました。 上昇するまでは横ばいですが、この横ばいの時間が2回とも異なります。 これはメモリリークと言えるのでしょうか? ちなみに、このDLLの調査対象機能は画像描画機能で、定期的にメモリ確保→メモリ解放を繰り返します。 メモリリークでないとしたら、どう結論付けたら良いでしょうか? 解決方法はありますか? 私としてはフラグメンテーションを疑っています。

  • メモリリークの件

    メモリリークについて教えてください。 最近VC++を勉強中なのですが、メモリリークというものを知り、_CrtDumpMemoryLeaks()をしたところ、以下のコメントが出力されました。 [コメント] Detected memory leaks! Dumping objects -> strcore.cpp(118) : {71} normal block at 0x00344978, 20 bytes long. Data: < cmd.> 01 00 00 00 07 00 00 00 07 00 00 00 63 6D 64 2E {48} client block at 0x003428E8, subtype 0, 64 bytes long. a CDynLinkLibrary object at $003428E8, 64 bytes long {43} client block at 0x00342720, subtype 0, 64 bytes long. a CDynLinkLibrary object at $00342720, 64 bytes long {41} client block at 0x003425D0, subtype 0, 64 bytes long. a CDynLinkLibrary object at $003425D0, 64 bytes long Object dump complete. スレッド 0x584 終了、終了コード 0 (0x0)。 上記のコメントから、メモリリークを起こしていることはわかりました。ただ、strcore.cppというクラスは作成していないのですが、エラーが出ます。 多分他の関数から呼ばれているクラスだと思うため、クラス等をコメントアウトして調べたのですが、エラーがまだ出力されます。 (Data: < cmd.> 01 00 00 00 07 00 00 00 07 00 00 00 63 6D 64 2Eここは自作クラス上の問題だと思います。) newとかの解放はしているのですが、他にメモリリークをする原因ってあるのでしょうか?

  • インターネットエクスプローラのメモリリーク?

    Win7x32、IE10(10.09200.16736)です。 最近やたらメモリが食われていると思って調べていたらどうもIEのようです。起動直後のメモリ使用量は1.4Gなのが、ひとしきりIEを使っているうちに2.8Gまで増えて、IEを終わらせても2.4Gまでしか下がりません。この1Gは何なんでしょうか? 正常なキャッシュなのか、それともメモリリークでしょうか?

  • Visual Studio2008でのメモリリーク

    プログラムを組んでいて、終了すると 以下のようなメモリリークがでました。 desktop\emptyproject ?d?a?E?μ\dxut\core\dxut.cpp(3385): DXUTCleanup3DEnvironment hr=DXUTERR_NONZEROREFCOUNT (0x80040904) D3DX: MEMORY LEAKS DETECTED: 363 allocations unfreed (322368 bytes) D3DX: Set    HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1a35 to debug MSDNでは DXUTERR_NONZEROREFCOUNT Direct3D デバイスがゼロ以外のリファレンス カウントを持っているため、一部のオブジェクトが解放されませんでした。 とありますが、この意味もよく分かりません。 今までのメモリリークは Dumping objects -> {343} normal block at 0x0207F288, 2240 bytes long. のように割り当てられたブロックが分かりましたが、 上の様なメモリリークは初めてで、 文からメモリリークの原因を検出することができないでいます。 何故、下ではなく上の様なエラー文になるんでしょうか?

  • Visual Studioのメモリリークについて

    質問を見ていただいて有り難うございます。 当方、現在MFCのダイアログベースのプログラムを行なっているのですが、プログラム終了時にメモリリークが発生します。 今のところプログラムの動作自体に影響はないのですが、想定外の動作が起こると困るのでなんとかこのエラーを取り除きたいと考えています。 メモリリークの殆どは _CrtSetBreakAlloc(Num);(指定した順序のメモリ割り当て時にブレークポイントを発生させる) を利用して、メモリリークが起こっている部分のブレークポイントをチェックして消したのですが、どうしても残りのメモリリークが消えません。 残りのメモリリークは_CrtSetBreakAlloc(Num)で指定してもブレークポイントが出てきませんでした。 _CrtSetBreakAlloc(Num)は『ファイル名.cpp』のInitInstanceおよびコンストラクタで呼び出してみましたが、どちらも同じ結果になりました。 また、試しに『ファイル名Dlg』クラスを使用しない(ダイアログを開かないようにコメントアウト)ようにして終了しても同じ結果になりました。 _CrtSetBreakAlloc(Num)を設定する適切な位置や、このようなメモリリークが出る原因、解決方法などについてご存知の方がいらっしゃいましたら、お教えください。 よろしくお願いします。

  • メモリーの相性について

    メモリーの相性について 中古で購入したNECのLavieC LC70H6 でメモリーは64*2の128MBです。(仮にメモリA、メモリBとする。) 昨日起動したところ、今まで特に問題がなかったにも かかわらず、起動できない(うんとも、すんともいわない) 状態となりました。 メモリーが怪しいと思い、メモリAとBをそれぞれ引き抜き AをBがさしてあったところに、BをAがさしてあったところに 挿しなおしたら、無事に起動しました。 いずれにしろメモリがおかしいのでmemtest+86(ver1.07) を使いチェックすることにしました。 最初にAをチェック(4passしました。)エラーなし 次にBをチェックしようとしたところ、また起動せず(うんとも、すんともいわない) そこで、またこのBを引き抜きもう一方の方に挿したら無事起動しました。 そして、Bをメモリーチェック(4passしました。)→エラーなし。 という様な状況なのですが、 (1)これはどういった状況なのでしょうか? (2)エラーがないにもかかわらず単に指す場所を 変えただけでどうして起動できたのでしょうか? (3)原因はなんでしょうか? (4)どの様にすれば解決できますでしょうか? 以上わかる方がございましたら、 ご指導いただけたら幸いに存じます。

  • Windowsでメモリリークの特定

    Windows8を使っていてメモリを8GB積んでいます。 3日ほど起動しっぱなしでいるとメモリの空きが少なくなっています といった警告ウインドウが出てきて、、メモリ使用量が6GBほどになっております。 恐らく何かのプロセスがメモリリークしてると思うのですが、 [タスクマネージャ]→[プロセス]タブを開き、メモリ列を確認しても メモリを多量に使っているプロセスは無く、表示されている全プロセスのメモリを合計しても、 とうてい6GBには達しません。 しかし[パフォーマンス]タブをみると8GB中の6GB使用中と表示されています。 このリークしているであろう見えないプロセスを特定するにはどうしたらよいでしょうか? 知っている方いましたら教えて下さい。 お願いします。

  • windows 2000 にしてからメモリーリークに悩まされています。

     windows2000 に詳しくないのでよく分からないのですが、最近よく分からないメモリーリークに悩まされています。 普通に遣っている分には何も起こらないのですが、使わないで放っておいたりデフラグやDL、CD-Rを焼いたりするために、長時間放置すると、ctrl+alt+deleteも利かなくなります。 他にも気になる症状としては、 ・ HDDの動きが遅くなった気がする。(NTFSだから?) ・ CD-Rの書き込みに失敗する。(前は4倍速くらいでしたが、今は常駐ソフトをすべて切って、2倍速でぎりぎりです。1倍速だと焼くのに時間がかかって上記のようなフリーズの状態のまま止まってしまいます。) ・ ページメモリが大きい(これはwindows2000だとしょうがない??) です。 フォーマットしてからOSの再インストールもしたのですが、それでもダメみたいです。どんなことを調べればいいのでしょうか?? ・ ウイルスソフト、接続ツール??→切った状態で一日置いてみましたがやっぱりフリーズします。 ・ メモリの設定→現在はすべてデフォルトに戻しましたが、ラージモデルにしてみたり、ファイルキャッシュサイズを設定したりしましたがダメでした。 windows2000 に詳しい方、何かいいモニタリングの仕方や原因について心当たりのある方、アドバイス等があったら何でも教えて下さい! また何か必要な情報があったら教えて下さい。お願いします。 環境は以下の通りです。 FMV DESKPOWER S(8) 337 CPU Celeron 333MHz    メモリ  320MB OS windows2000 Professional HDD 6.4GB(IDE)+ 4.2GB(外つけSCSI) ファイルシステム NTFS(内蔵) + FAT32 (外付け) 接続環境  フレッツADSL で、接続ツールを使ってモデムにPPPoEで接続 気になるソフト winCD-R 5.0 Norton Internet Security 2.05 Norton Anti Virus 7.07 (フレッツ接続ツール)