はじめまして。

現在作成中のプログラムで仮想メモリの使用量が増加していく現象が発生しています。これは、Windows2000のパフォーマンスモニタを利用して発見したものです。

そこで、仮想メモリの使用量を調べるためにWindowsAPI関数を調べているのですが、システム全体のメモリ使用量等がわかるGlobalMemoryStatus関数があることは分かりました。

システム全体ではなく、特定のプロセスの仮想メモリ使用量がわかる関数または手法をご存知の方は教えてください。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

 プログラム側からはたしか、リアルメモリと仮想メモリの区別は付かなかったんじゃなかったでしたっけ。

でないと仮想「メモリ」である意味がありませんから。自信なし。

 で、この質問の回答ではありませんが、その現象は十中八九メモリリークです。
 「アロックしたままフリーしてない」とか「内部でアロックするAPIを呼び、そのままフリーしてない」といったような部分が、おそらくはあるはずです。
 それらを一度全部見直してみてください。

 Win32 API の中には、構造上、「アロックはするけどフリーはしない」関数が山のようにありますので。
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。

GlobalMemoryStatus関数で取得できるMEMORYSTATUS構造体の情報のdwTotalVirtual値とdwAvailVirtual値からプロセスの使用している仮想メモリ値を算出できるとのことでした。

これからもよろしくお願いします。

お礼日時:2001/07/11 14:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q液晶モニタのデジタルとアナログ入力端子の両方につなぐとどうなるのですか?

19インチワイド液晶モニタを購入しようと思うのですが、PS2もやりたいのでアップスキャンコンバータも購入しようと思います。

PCはデジタルの方が断然キレイとのことなので、液晶モニタはデジタル端子のあるものにしようと思っています。(35,000円くらい)
アップスキャンコンバータは安いもので8000円くらいであったのですが、アナログ端子のみ対応しています。

PCは直接液晶モニタのデジタル端子に接続、PS2はアップスキャンコンバータを介して液晶のアナログ端子につないで使用できるのでしょうか? 切り替えはどうするのでしょうか?

Aベストアンサー

他の方も書かれているとおりスイッチ(ボタン)で切り替えます。
TVにもビデオとか切り替えるスイッチ付いてますよね?あれと同じと考えて下さい。

それと少し高いですがPS2などが繋がるRCA端子やS端子もあり、TVチューナーとスピーカーの付いたモニタもありますよ。
ご参考
http://directshop.samsung.co.jp/product/viewProduct.jsp?prdItmId=1352

逆にPCが繋がるTVもあります。

Qstatic 関数のメモリ使用量

会社で過去のプログラムを参考に新規開発を行っているものですが、
旧プログラムは関数宣言でstaticを使用しており、関数のカプセル化をしている。

旧プログラムをみならい、staticで関数を宣言したのですがレビュー時にstaticで関数を宣言した場合、
『メモリーを多く使用するのでは?』と質問されたのですが回答が見つかりません。

詳しい方教えていただけますか?

プログラムはファイル分割されており、同一関数名は存在している。
コンパイラーはgccです。

Aベストアンサー

関数の生存期間はすべて静的記憶域期間です。したがって、externをつけても static をつけても、何もつけなくてもメモリの使用量は一緒です。

参考文献
C言語によるプログラミング スーパーリファレンス編、オーム社、2000.

以下、参考文献より該当箇所を抜粋
----------------------------------------------------------
第26章 関数 (page 346)
26.1.1 関数の種類
(前略)
なお、関数には自動記憶域期間のように、ある一定期間内だけ存在するという関数はありません。生存期間(10.4節)は、すべて静的記憶域期間です。
(以下略)

Qデジタル端子のモニター

デジタル端子が使えるモニターは。液晶しかないのでしょうか?

希望としては17インチのモニターを探しているのですが。ない場合は15インチでもいいです。

一番の希望は。デジタル端子が使えて価格の安い、液晶じゃないモニターの(CRT)17インチがほしいのですが。ないでしょうか?

Aベストアンサー

#1です

思い出したことがあったので追記

「DVI-D」はデジタル専用ですが
「DVI-I」はデジタル/アナログ兼用。しかも設計が安易なので、装備しているCRTがあったかもしれません。

http://siisise.net/crt.html

CADマシンやグラフィックワークステーションマシンにはBNC端子が多く使われていたので、DVIは極々稀な例だと思います。
AppleComputerのMacがその部門でも液晶パネルを標準とし始めたのでCRTのDVI化はさほど進んでないと思われます
(DOS/V機の汎用液晶とAppleComputerの液晶では格が全然違いますが)

QWindowsAPIからC言語関数への代替について

ウィンドウズOSのプログラムから、Linuxプログラムへ移植するにあたり、ウィンドウズプログラムで使用していたAPIをLinuxで使用可能な関数に変更しなければいけなく、「API/C言語関数・Linuxシステムコール対応表」のようなものを探しています。知っている方教えてください。

Aベストアンサー

回答ではありませんが似たような経験があるので。

Win32APIはシステムコールではありません。
ウィンドウ制御、メッセージキュー制御などの(WindowsOSと不可分の)サービスコールを含んでいるため、単純にlinuxシステムコールと対応させることは無理でしょう。


細かいことをあげれば
・X-WindowとWindowsのオブジェクト管理方式の違い
X-Windowにおいて「Widgetは親Widgetの領域を越えて描画することが出来ない」という制限があるため、Windowsで利用可能なComboBoxの実現は非常に困難です。
(無理!というレベルではありませんが)
こういうところがたくさん出てきます。
・WindowsOSとLinuxのメモリ管理方式の違い
Handleの概念、グローバルヒープの概念、共有メモリの実装方式の違いなどなど。
特に、メモリマップドファイルを共有メモリ代わりに使われているとダメージが大きい。
・イベントの数、種類の違い
・スレッドの管理方法、概念の違い
・プロセス間通信方式の違い
・etc...

苦労したポイントは数限りなく…

移植するプログラムがどれくらいWindowsに依存しているかにもよりますが、基本的に「Linux向けに設計しなおして頭から作ったほうが早い」と思います。
もちろん、Windowsへの依存度が低いものは流用すればいいんですけど。

「WindowsAPI的なインターフェースを持つLinuxシステムコールラッパーを作れば…」というのは多分失敗します。
なにせ、違う部分が半端じゃないので。

私が経験したのはWindows95→HP-UX9なので、多少状況は違うかもしれません。

回答ではありませんが似たような経験があるので。

Win32APIはシステムコールではありません。
ウィンドウ制御、メッセージキュー制御などの(WindowsOSと不可分の)サービスコールを含んでいるため、単純にlinuxシステムコールと対応させることは無理でしょう。


細かいことをあげれば
・X-WindowとWindowsのオブジェクト管理方式の違い
X-Windowにおいて「Widgetは親Widgetの領域を越えて描画することが出来ない」という制限があるため、Windowsで利用可能なComboBoxの実現は非常に困難です。
(無理...続きを読む

Qデジタル入力端子(DVI-D)付きの液晶モニターについて

デジタル入力端子(DVI-D)付きの液晶モニターについて
デジタル入力端子(DVI-D)の端子がある液晶モニターを買ったとして、
デジタル対応していないパソコンに
アダプタでアナログRGBミニD-Sub15ピン
に変換して使えるみたいですが、画像はよくなるのでしょうか?
デジタルはデジタルにつながないと性能は発揮できますか?
素人ですみませんが教えてください。。。

Aベストアンサー

それは無理です。
DVI-Dはデジタル入力のみに対応します。
D-Sub15はアナログですので変換して接続は無理です。

おそらく、DVI-Iや、DVI-Aなどと勘違いされているのではないでしょうか。
これらはD-Sub15と変換できます。
http://siisise.net/crt.html#dvi

アナログでつないだ場合、画質はD-Sub15でつないだ場合(アナログ)と全く同じになります。

Qメンバ関数テンプレートの仮想関数。

VC8.0言語処理系でメンバ関数テンプレートを仮想関数にしたらエラーになりました。
これは、VC8.0言語処理系の対応なのでしょうか? それともC++言語系の仕様なのでしょうか?

今回、メンバ関数の一部にイテレータを使用していまして、その関係で一部の関数がテンプレートになっています。
そして、基底クラスでは実装せず、派生先で実装を強制する純粋仮想関数としたのですが、この処理がコンパイルエラーとなっています。

メンバ関数の参照などを考えたのですが、どうも巧くコンパイルでき無そうです。

この処理が出来ないことは設計段階で把握していなかったので、これが出来ないとすると設計のし直し(テンプレートの廃止など)をしなくてはいけません。
詳しい方がいらっしゃいましたら、お願いします。

Aベストアンサー

標準C++の言語仕様上許されていません。

N1905
"Working Draft, Standard for Programming Language C++" より:

14.5.2 Member templates
3 A member function template shall not be virtual.
[ Example:
template < class T > struct AA {
 template < class C > virtual void g(C); / / error
 virtual void f (); / / OK
};
—end example ]

Q光デジタルケーブルの端子があるおすすめのスピーカーを教えて下さい 用途はゲームモニターです 映画とか

光デジタルケーブルの端子があるおすすめのスピーカーを教えて下さい
用途はゲームモニターです
映画とか見たりもします

Aベストアンサー

「ONKYO社」より光デジタルケーブル端子つきスピーカーが発売されて
います。

[GX-500HD]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx500hd/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx500hd/interface.htm

[GX-100HD]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx100hd/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx100hd/interface.htm

[GX-D90]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gxd90/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gxd90/interface.htm

[GX-77M]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx77m/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx77m/interface.htm

「ONKYO社」より光デジタルケーブル端子つきスピーカーが発売されて
います。

[GX-500HD]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx500hd/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx500hd/interface.htm

[GX-100HD]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx100hd/index.htm
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gx100hd/interface.htm

[GX-D90]
http://www.jp.onkyo.com/pcaudio/poweredspeaker/gxd90/index.htm
http://www.jp.onkyo.com/pcaudio/powered...続きを読む

QWindowsAPIの調べ方

わからない事があったら「MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/default.asp
で調べよう」というのをよくみかけるのですが

例えばWindowsAPIのCreateFiber関数を調べたい場合
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnroad/htm/devmobfaq.asp
に説明がでていますが
Microsoft.com Japan サイトの検索で「CreateFiber」を検索しても
上記のURLはでてきません。

MSDN ライブラリを使ってAPI等を調べるとき
皆さんはどのようにされているのでしょうか?
効率的な検索方法を知りたいです。
よろしくお願いします。

Aベストアンサー

日本語のMSDNライブラリサイトは検索しにくいし、情報が古かったりするので使いません。

お金を払ってMSDN会員になればMSDNライブラリのCD-ROMをもらえたりダウンロードできます。
安価に手に入れたいなら、VisualなんとかのStandard版にもMSDNライブラリが入っているはず。

ただですませるなら、
Platform SDK
のDocumentationを使う。
ただしこちらは全部英語です。

QモニターのDVI端子に地上/BS/CSデジタルチューナーを、接続するには?

今、使っているモニターは、ナナオS2410Wです。
DVI入力端子が2つ付いて、1,2と切替が出来ます。

 そこで、
1のDVI入力端子を、パソコンの本体に接続し、
2のDVI入力端子を、地上/BS/CSデジタルチューナーを、D端子又は、iLink経由でDVI変換コネクターを、使用して、映るようにしたいのですが?

チュ-ナーD端子(750p、1080i,p)出力から――D端子コンポーネント(RGB)変換プラグ――コンポーネント(RGB)DVI変換プラグと経由して接続しようと思うのですが?

何か良いアドバイスがありましたら、お願いします。

Aベストアンサー

S2410WのDVI入力は、2入力共DVI-I(アナログ・デジタル両対応)ですので、地上/BS/CS
デジタルチューナーのD端子出力からDVI-I入力へは、以下の様な接続で可能になります。
(iLinkからは無理と思います)

D端子出力 → D端子/アナログRGB(D-sub15pin)コンバーター → アナログRGB(D-sub15pin)/DVI変換コネクタ

D端子/アナログRGB(D-sub15pin)コンバーターは、例えば↓(\20,000ぐらい)とか。
http://www.micomsoft.co.jp/xselect-d4_function.htm

参考URL:http://www.micomsoft.co.jp/xselect-d4_function.htm

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

プロセスのメモリ使用量の確認方法についての質問です。
#実際にプログラミングされている人の方が詳しいかと思い、こちらのカテゴリに
#質問させて頂きます。

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

Aベストアンサー

私は以下の方法を使用しています。

WindowsNT系でしたら、タスクマネージャーでプロセス一覧&メモリ使用量が分かります。

95(95~Me)系の場合は、物理メモリに余裕をもたせた状態でシステムモニタを監視しつつプロセスを起動します。(減った分がプロセスの大体のメモリ使用量)

UNIX系だったらコマンド一発レベルで分かるんですけどね~。


人気Q&Aランキング

おすすめ情報