• ベストアンサー

メモリについて

C++で開発を行っています。 メモリ使用量についての質問です。 new でオブジェクトを大量に生成した後、deleteにて開放した場合、 タスクマネージャー上のPF使用量は生成前の状態に戻らないのでしょうか? 自分のマシンでは戻るのですが、他のマシンで確認すると戻りません。 マシンの性能やメモリ使用状態による?異なるのでしょうか? どなたか教えていただけないでしょうか。

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

  • ベストアンサー
  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.4

PFの管理はOSの仕事なので、直接手出しはできないです。 たぶん、メモリの断片化(フラグメンテーション)が起きているのだと思うのだけれど。 http://www.uquest.co.jp/embedded/learning/lecture43.html 自前で何とかしたい場合はメモリプールとかを使用するのが良いかも。

skawase
質問者

お礼

わかりやすいご説明、ありがとうございます。 原因がわからないのですが、リビルドをしたところとりあえず戻るようになりました。 ですがOSの仕事=ブラックボックスなので、メモリプール等も考えてみます。 ありがとうございました。

その他の回答 (3)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

>ほかにメモリを大量に使用するようなソフトは立ち上げていない状態です。 大量でなくても、たとえ1バイトでも使っちゃうと起こりえます。 >先にも書いたとおり、他のマシンでは戻ります。。 こういうところはOS依存と言いまして、OSによってはサポートしていないところが随分あります。

  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.2

ライブラリの仕様によります。 new, deleteなどはOSに対して直接メモリの確保要求や解放要求を行っているとは限りませんし、仕様的にもそのようには明言されていません。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

あなたが確保している間に他のソフトがその次を使っちゃった場合は戻りませんね。 あと、deleteが即時行われているかどうかにもよります。

skawase
質問者

補足

ほかにメモリを大量に使用するようなソフトは立ち上げていない状態です。 newで1GBほど上がるのですが、deleteで戻るのは半分ほどです。 delete後にメッセージボックスを表示するようにして中断しているのですが、時間がたってもかわりません。 newとdeleteを繰り返しているのですが、だんだん使用量が増えていって最後メモリエラーとなってしまいます。 先にも書いたとおり、他のマシンでは戻ります。。

関連するQ&A

  • メインメモリ使用量の計算について

    メモリ使用量(物理メモリ)の合計値はタスクマネージャのPF使用量ですよね。 プロセスタブのメモリ使用量の合計値とPF使用量と一致するんですか? 明らかに一致していないんですが。

  • 仮想メモリについて教えてください。

    Windows XP SP3を使用しております。 メモリを3GBに増やしたので仮想メモリ(ページンングファイル)を無しにしたのですが タスクマネジャーでみるとPF使用量で650MBほど表示されます。 ページングファイルはなしにはできないでしょうか?

  • タスクマネージャーを見ると、メモリ増設は無意味?

    XP HE CPU : 1.4GHz メモリ:640MB のマシンを使用しています。 メモリ増設を考えているのですが、 現状でどのくらいの負荷がかかっているのかを調べるために タスクマネージャーを起動しているのですが、 CPUの負荷率が100%近くを示している時でも、 メモリのPF使用量はせいぜい300MBあまりくらいしか 指していません。 メモリをフル(600MBくらい)に使っている状態が発生しないということは、 今のままメモリを1GBとかに増設しても、増やしたメモリを使うことがなく、 無意味ということなのでしょうか? 言い換えれば、このCPU速度であれば、これ以上メモリを増やしても 無意味ということでしょうか? よろしくお願い致します。

  • メモリについて教えてください

    こんにちは。お聞きしたいことがあります。 使っているデルのノートパソコンのメモリが512MBです。 「タスクマネージャ」→「パフォーマンス」でPF使用量という 部分がありますよね。ここが、使用中のメモリを示して いるのでしょうか?自分、常時350MBとあるんですが、 これは、350MB常に使用されていると言うことですか? PF使用量と書かれた部分のすぐ下に6つほど細いものが 重なったパワーゲージのようなものがありますが、これは 下2つしか緑色で表示されていません。残りの4つは 緑色で表示されていないので、2/6すなわち512MB× 2/6=140MB程しかメモリが使われていないと考える ことはできないのでしょうか? さらにもう1つお聞きしたいのですが、今350MB程 常時使っているのですが、さらに512MB増設した 方が良いですか?増設すると、なにか良いことがあるのでしょうか? お忙しいところ恐縮ですが、お時間ありましたらどうか よろしくお願いいたします。

  • メモリ使用量

    タスクマネージャーのプロセスのメモリ使用量の合計とPF使用量が一致しません。 これはどうしてなんでしょうか? 2週間くらいスタンバイ、復帰を繰り返して使っているのですが、最初は800MBくらいのメモリ使用量だったのが、今では1.2GBになっています。 スタンバイによりメモリ使用量が増えるってこと ないですよね? メモリは1GB(VRAM 16MB含む)、仮想メモリ512MBにしています。 1.5GBを超えないか心配です。 仮想メモリを増やした方がいいでしょうか?

  • 物理メモリとスワップ(仮想メモリ)について

    windows xp 搭載メモリ:512MB の環境です。 タスクマネージャでメモリ使用量を見ると、 物理メモリ 合計:514992(約512MB) 利用可能:251928KB PF使用量(物理メモリで利用されている量+スワップ?):340MB となっていまして この状態というのは 物理メモリで約260MB使っていて(合計-利用可能) スワップが約80MB(PF使用量-260MB) 発生しているということなのでしょうか? 利用可能な物理メモリが251928KBもあるのに、 残りの物理メモリを使わず、スワップが発生しているように 見えるのですが、物理メモリに、ある程度利用可能なメモリ領域が あっても必ず仮想メモリを利用するものなのですか? 自分としては、物理メモリの使用量がMAXになってから 搭載している物理メモリの最大値を超えて、溢れたからそらに 対応するために、仮想メモリが使われるような概念をもっていますが、 違いますでしょうか? 頭が混乱中ですw ご教授お願いいたします。

  • 仮想メモリについて

    仮想メモリについて質問させていただきます 実装メモリが2GBのPCでゲームをやっているのですがそのゲームを裏に回した状態でいろいろ作業していたら 2GBでは足りなくなったので、仮想メモリを使おうと思い設定したいのですが こちらのURLに http://oshiete1.goo.ne.jp/qa3831375.html?ans_count_asc=1 >要はPF使用量が実装メモリを超えなければ大丈夫です。 >タスクマネージャで時々チェックして下さい。 と、あるのですがPF使用量が実装メモリを超えると何か問題なのでしょうか? 2GBあるから、+1GBあれば十分かなと最小最大とも1024MBに設定したのですが 仮想メモリが少なすぎますとシステムに怒られてしまいました やはり仮想メモリは実装メモリの1.5倍必要なのでしょうか? それとも、このシステムの警告は無視して大丈夫でしょうか?

  • メモリ使用量の増加を防ぐ方法

    タスクマネージャーで初めにIEを起動したときには、物理メモリの容量よりも 合計は下回っていて、軽いんですが、その後、クリック、リンク等を繰り返し ていくうちに、PF使用量が増えて、物理メモリの容量をこえ、重くなってしま います。(プロセスのIEXPLORE.EXEのメモリ使用量も、IEを使用するにつれ 増えていきます。)だから、たとえメモリを増設しても、次第にPF使用量が増え ていくので、意味がないのではないかと思います。 そこで、聞きたいんですが、IEのメモリの増加を防ぐ方法、または、増加した メモリを減らす方法があれば教えてください。(IE以外は、それほどメモリは 使用していません)他のメモリを減らす必要はないと思いますが・・・ 回答よろしくお願いします。

  • メモリについて

    最近、それとなくタスクマネージャーとやらをチェックし始めたのですが・・・ 表示されてる内容の意味が今いちよく分かりません・・・ パフォーマンスのCPU使用率はなんとなく理解できるのですが、PF使用量や物理メモリ、カーネルメモリコミットチャージやら・・・ 物理メモリは実際に装着しているメモリの事ですよね?? その中の合計メモリもなんとなく理解できます 利用可能メモリも理解できます システムキャッシュってなんですか?? 回答してくださる方にとって、かなり面倒な質問になってしまってると思いますが...(^^;) お願いします

  • タスクマネージャでPF使用量が1.5GB前後に

    よろしくお願いします。 物理メモリが1GBのマシン(DELL製)で、Windows XP Pro SP2、Internet Explorer7を使用しています。 タスクマネージャを常に起動してパソコンを使用しているのですが(固まったときなどにプロセスを終了させたり、Windowsを終了出来るため)、先日、PF使用量が1.5GBになっているのに気づきました。 いままでに色々なソフトを起動した状態で動作が重くなった場合でもPF使用量が1GBを超えたことはほとんどありません。 パソコン起動時のPF使用量は350MBくらいです。これは以前と同じです。 使っていると(主にIE、Photoshop、GOMPlayer)、PF使用量が増えていきますが、1.5GBの状態でも、マシンはそれほど重くありません。 タスクマネージャのプロセスを確認してみると、explorer.exeのメモリ使用量が約350MB、仮想メモリサイズが約750MBと異常に大きいのです。 タスクマネージャから、explorer.exeのプロセスを終了させると、当然といえば当然なのかもしれませんが、壁紙の状態で固まります。 タスクマネージャのメニューバーのシャットダウン(やスタートメニュー)で、ログオフし、ログオンしなおすと、PF使用量は普通に戻ります。(使用していると増えていきますが。) いつからこういう状態になったのか分からないため、原因(ソフトのインストール・Microsoft update等設定の変更)が特定出来ません。 常駐ソフトはウィルス対策のAVGだけで、インデックスサービスはオフにしています。フォントは以前から300くらい入っていますが、いままでは影響ありませんでした。 ウィルススキャンはやってみました。IEのタブは使用していません。 マイコンピュータ→プロパティ→詳細設定→パフォーマンス→詳細設定の値はデフォルトのままで変更していません。ただ、半年ほど前、HDD増設時点でスワップ用の領域(4GB)を確保し、そこに移動しています。 Windows自体重くならないので使用に問題はないのですが、なんだか気持ち悪いです。 システム再インストール以外の解決方法、わかるかたいらっしゃいましたら、よろしくお願いします。

専門家に質問してみよう