• 締切済み

プロセスの使用している仮想メモリ量について

はじめまして。 現在作成中のプログラムで仮想メモリの使用量が増加していく現象が発生しています。これは、Windows2000のパフォーマンスモニタを利用して発見したものです。 そこで、仮想メモリの使用量を調べるためにWindowsAPI関数を調べているのですが、システム全体のメモリ使用量等がわかるGlobalMemoryStatus関数があることは分かりました。 システム全体ではなく、特定のプロセスの仮想メモリ使用量がわかる関数または手法をご存知の方は教えてください。 よろしくお願いします。

みんなの回答

noname#25358
noname#25358
回答No.1

 プログラム側からはたしか、リアルメモリと仮想メモリの区別は付かなかったんじゃなかったでしたっけ。でないと仮想「メモリ」である意味がありませんから。自信なし。  で、この質問の回答ではありませんが、その現象は十中八九メモリリークです。  「アロックしたままフリーしてない」とか「内部でアロックするAPIを呼び、そのままフリーしてない」といったような部分が、おそらくはあるはずです。  それらを一度全部見直してみてください。  Win32 API の中には、構造上、「アロックはするけどフリーはしない」関数が山のようにありますので。

Tatinori
質問者

お礼

回答、ありがとうございました。 GlobalMemoryStatus関数で取得できるMEMORYSTATUS構造体の情報のdwTotalVirtual値とdwAvailVirtual値からプロセスの使用している仮想メモリ値を算出できるとのことでした。 これからもよろしくお願いします。

関連するQ&A

  • メモリ使用量及び仮想メモリについて

    PCの主な用途はゲームや動画鑑賞なのですが XPでつんでるメモリは1G×2の2Gで メモリ使用量は「プログラム」「システムキャッシュ」どちらのほうがパフォーマンスがあがりますか? あと仮想メモリの適正値をできたら教えてください(。。m

  • パフォーマンスモニターのメモリ使用量測定について

    Windows Server 2003のパフォーマンスモニターについてお聞きしたいことがあります。 ■質問 パフォーマンスモニターの以下の2項目は、 一方が増加すれば一方が減少するという相関を持たないのでしょうか? ・memory/available bytes(利用可能な物理メモリの容量) ・process/working set(プロセスが使用している物理メモリ量) ■質問の背景 サーバーに対しあるリクエストをした際に、memory/available bytes(利用可能な物理メモリの容量)が一時的に1.5GB程度減少しますが、process/working set(プロセスが使用している物理メモリ量)が増加しません。 利用可能なメモリが減少したということは、その分何らかのプロセスがメモリを消費していると考えますが、パフォーマンスモニターの結果がそのような傾向を示さなかったため、質問させて頂きました。

  • メモリ使用量=100??

    メモリ使用量=100?? パフォーマンスモニタを見ると page faults/sec (仮想メモリ使用率)が20秒間隔くらいで100になります 通常は常に0が望ましいようです メモリ自体はまだ3/1のど余裕があります なぜ仮想メモリを使ってしまうのでしょうか? 使用率を下げる方法と できればどのアプリケーションが仮想メモリを使っているのか わかるとうれしいです、 よろしくお願いします。。

  • プロセスのメモリ使用量の確認方法

    プロセスのメモリ使用量の確認方法についての質問です。 #実際にプログラミングされている人の方が詳しいかと思い、こちらのカテゴリに #質問させて頂きます。 プロセスのメモリ使用量を確認するために、パフォーマンスモニタを使おうと 考えています。 「オブジェクト」に「Process」を指定したときの、「カウンタ」では 何を選択すれば確認できるでしょうか。 カウンタごとの説明は読んだのですが、明確に理解することができませんでした。 識者の方、ご教授願います。 また、その他のツールを使った方法があれば教えてください。

  • プロセスと仮想メモリについて

    プロセスと仮想メモリについて こんばんは。 プロセスについて勉強しています。 その過程で、「プロセスは物理メモリーとは切り離された仮想メモリーにアクセスする。 仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 とありました。 今まで仮想メモリーと言うのは、ページングファイル(物理メモリの代わりに使用される ハードディスクの領域)のことだと思っていましたが、この仮想メモリーと、プロセスを 語る上での仮想メモリーとは別物なのでしょうか? 宜しくお願いいたします。

  • Windowsのメモリ使用量が稼働プロセスと不一致

    Windows で使用しているメモリ量をプロセスごとに把握する際に、 検算としてリソースモニタのメモリタブに表示されるプロセスのメモリ量を合計してみましたが、 その容量がリソースモニタで表示されている物理メモリの使用サイズと一致しません。 ■使用マシン  OS : Windows Server 2008 R2 Enterprise 64bit  物理メモリ容量 : 16 GB ■リソースモニタでの出力内容  物理メモリ使用量 : 11241 MB  リソースモニタに表示されるプロセスの全メモリ合計(ワーキングセット) : 8306 MB  リソースモニタに表示されるプロセスの全メモリ合計(コミット) : 9509 MB タスクマネージャや tasklist コマンドで表示されるプロセスのメモリを合計しても、 同様に「物理メモリ使用量」の値に届かないため、プロセス外の何らかのものが メモリを使用していると推測されますが、実際はどうなのでしょうか? (共有メモリなど特定のプロセスに属さないメモリ領域など??) また、そういうものがあった場合、そのメモリ使用量をどのように確認すればよいでしょうか?

  • PostgreSQLのメモリ使用量について

    お世話になります。 漠然とした質問になってしまうのですが、 postgresのメモリ使用量が増加し続け、 最終的にメモリ不足になる現象で困っております。 もし、PostgreSQLのチューニングで解消できるようでしたら ご教示頂けないでしょうか? 詳細(ざっくりですが、、、)は、 周期的にSELECTを実施しているプロセスがあるのですが、 psで監視すると、postgresのメモリ使用量が、 少しずつですが増加し続け SELECTをやめると増加は止まるのですが、 増えたままで減りません。 (試験的にSLEEPしてSELECTを止めた状態を作成) ちなみにSELECTしているプロセス(C言語)自体は メモリリークしておりません。。。 漠然としてて申し訳ございませんが お知恵をお借りできるとうれしいです。

  • メモリ使用量

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

  • メモリ使用量が物理メモリ値を超えたらどうなりますか?

    仮想メモリを無効にして物理メモリだけにした時に 物理メモリ量をメモリ使用量が超えると、どうなりますか? (パフォーマンス重視で仮想メモリOFFにしてる方もけっこうおられると思いますが…) また、仮想メモリを設定していても仮想メモリ設定値+物理メモリ量の値を 使用メモリ量が超えた場合も同様にどうなるのでしょうか? (ブラクラなどに遭遇したらありえそうな状況ですよね) フリーズするのでしょうか? それとも遅くなるだけでしょうか? どうも怖くて自分では試せません。 ご存知の方がおられましたら、よろしくお願いします。

  • PF(ページファイル)使用量とプロセスのメモリ使用量合計が一致しないのはナゼ? WinXP

    Windows XP home のメモリの使用量について質問です。 まず、私はWindowsタスクマネージャのパフォーマンス欄の「PF使用量」がメモリの使用総量で、 プロセス欄のイメージ名やメモリ使用量が、その内訳だとてっきり思っていたのですが、 今日、プロセス欄のメモリ使用量を全て合計してみると、 「PF使用量」よりも少ないことに初めて気が付きました。 具体的にはパソコン起動直後で 「PF使用量=320MB」「プロセス欄のメモリ使用量合計=289MB」「2つの差31MB」 ウイルスバスターなどの常駐系ソフトを終了させた状態で 「PF使用量=238MB」「プロセス欄のメモリ使用量合計=185MB」「2つの差53MB」でした。 そもそも、「PF使用量」と「プロセス欄のメモリ使用量合計」の違いや差が何なのか分からないです。 また、この「2つの値の差」が状況によって変わっているのも不思議です。 プロセス欄に表示されないでメモリを使ってるのはなんなんでしょうか? ちなみに参考になるか分からないですが、 仮想メモリは使用しない設定にしています。  

専門家に質問してみよう