• ベストアンサー

小さなプログラムのメモリ消費量の測定方法

自分で開発しているプログラムのメモリ消費量を測定したいと考えています。 このプログラムはC++言語で記述し、Linux環境でGCCを利用して開発しています。以前、プロセスのメモリ消費量を確認してみたところプログラムのメモリ消費量が少ないせいか、プロセスの最小メモリ消費のような値のまま大きな変化はありませんでした。 このようにメモリ消費量が小さなプログラムの測定を行なう方法を教えてください。

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

sizeコマンドを使えば、各セクションのサイズが分かります。 ただし、mallocや大域的newなどで動的に割り付けたメモリの使用量は分かりません。

corsilon
質問者

お礼

sizeで静的なメモリ消費については確認できるんですね、 sizeコマンドすら把握していなかったので大変参考になりました。 質問に記述していないので私が悪いのですが、 最終的には動的なメモリ消費も含めた値を測定したいと思っています。 しかし、sizeコマンドである程度のメモリ消費を把握できたので助かりました。 回答ありがとうございました。

その他の回答 (1)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

プログラムの終了間際の所で getrusage を呼び出して計測するのが一番正確かな? 詳しくはgetrusageのマニュアルを読んでください。 /usr/bin/time コマンドでも判るはずなのですが、手元のdebianで調べてみたら小さなプログラムでは 0 になるだけでした。

corsilon
質問者

お礼

お礼が遅くなりました。 回答ありがとうございます。 getrusageを使って色々と値を測定することができました。 ありあがとうございました。

関連するQ&A

  • プログラムの最大メモリ消費量の計測について

    C言語あるいはC++でプログラムの最大メモリ消費量を測定するには どうしたらよいのでしょうか。 計算機実験で測定が必要なのですが、なかなか情報がなくて困っています。 OSはWindows7でVC++で開発しています。 ご回答よろしくお願いします。

  • メモリの消費量を知る

    VB6で開発したアプリケーションの実行中に、「メモリ不足」で強制終了してしまいます。 内容は、「ファイルを入力、処理、ファイルを出力」をファイル数分繰り返すものです。 処理に市販のGISアプリケーションを利用しているため、それが悪さをしているかもしれません。ただ、ステップ数がかなりあるので、どこが悪いのか見つけられないでいます。 そこで、プログラムの途中でメモリの消費量を知る方法はありますか? ちなみに、タスクマネージャーのプロセスのメモリ消費量をみると、確かに、増加しているのですが、プログラムで出力しているウィンドウ画面を最小化すると、一旦激減してしまって、実際の処理との関係がよく分かりませんでした。

  • 最小化したプログラムのメモリ使用量について

    最小化したプログラムのメモリ使用量について タスクマネージャーのプロセスタブを開き、各プロセスが使用しているメモリ量を確認します。 たとえば、IE(当方、社内規定によりIE6利用中)が100MBメモリを使用しているとします。 これを最小化ボタンでタスクバーに納めると、メモリー使用量が激減します(場合によっては2MB程度まで)。 これは、どういう意味なのでしょうか? PFの使用量が変化しないということは、仮想メモリーにデータを退避させ、物理メモリ上の空き領域を増やしているとみていいのでしょうか? 過去の質問の中で、UI部分のメモリーが必要なくなったために少なくなるという回答を見ましたが それは違うのではないかと思っています(キャッシュなどを考えると2M程度で収まるとは到底思えない)。 そもそもIE6はメモリーリークを起こすので、その分が開放された、という話を聞いたことがあります。 これは正しいのでしょうか? 取り立てて困っているわけではありませんが、好奇心というか知りたがりというか・・・。 ご教授のほど、よろしくお願いします。

  • 【携帯アプリ】メモリ消費量の確認

    こんにちは。 S!アプリの作成中の者です。 現在テスト段階に入っているのですが、 実機で動作確認をしたところ、エミュレータでの動きと あまりにも違った為、設定に不備がないかを調査しております。 (エミュレータで取得・表示できている値が実機では表示されない等) エラーは特に出ておりません。 開発しているアプリは、MIDP2.0対応端末向けで エミュレータはMEXAを使用しています。 テスト用に用意した端末は930Pです。 原因を探る為、インターネットで検索したところ、 アプリのメモリ消費量が多いのではないかという考えにたどり着いたのですが、 作成したアプリのメモリの消費量を測定する方法が分かりません。 Runtimeクラスというものを何度か目にしているのですが、 具体的に実行中のアプリのメモリ消費量を測定する為に どのように利用したらいいのか書かれているものが見つかっていません。 初歩的な質問で大変申し訳ございませんが、 何かご存知の方がおりましたらご回答いただけると助かります。 よろしくお願いします。

  • ノートンのメモリ消費量について

    現在、こうやってFireFoxで書き込みしてるだけで メモリ、消費量が248/228MB中、消費しています。 XP SP1だけで110MBを消費し、firefoxで33mb使うと聞きました。で、プロセスみても差の100mbを消費してるブツがわかりません。 再インストールしかないなと用意してたときにふと、「ノートンはいくら消費してるのだろう?」と思いました。検索してもノートンの消費量に当たりません。 なのでつい質問してしまいました。 どぞご回答下さい。

  • UNIXで自作プログラムのメモリ使用量を調べ方がわかりません

    卒業研究の一環でプログラムを複数作成しました。 研究結果としてプログラムの実行時間、メモリ使用量を出し、比較をしたいと考えています。 ちなみにOSはFreeBSD(もしくはLinux)で、c言語のプログラムです。 プログラムの実行時間はUNIXのtimeコマンドにより導き出すことができますが、プログラムの最大メモリ使用量を導き出す方法はあるのでしょうか? インターネットなどで調べてみたのですが、それらしいコマンドは見つかりませんでした。 もしあるのであれば教えていただけると幸いです。

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

    メモリの使用量の確認方法について教えてください。 freeコマンドを実行すると以下のように表示され、2GB中1.3GBを使用していることが分かります。 total used free shared buffers cached Mem: 2072828 1358364 714464 0 175372 836028 -/+ buffers/cache:346964 1725864 Swap:2096472 0 2096472 どのプロセスがメモリを消費しているか調べたいと思い、topコマンドを実行後、"M"でメモリの消費量の多い順にプロセスを並べ替えて、使用率の合計を計算してみました。 しかし、その合計値は約20%ほどです。 2GBのメモリを積んでいますので400MBほどしか使用していないことになります。 freeコマンドとtopコマンドでどうしてこんなに大きな差が出ているのでしょうか? また、どちらが正しい値なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • メモリ消費量の計測

    自作プログラムを実行した時のメモリ消費量は計測できますか?使う変数を数えるのでしょうか?int型(4バイト)を10コ使うから、40バイトとか・・・

  • メモリを大量消費してるプロセスが見つからない

    タスクマネージャーでメモリ使用量が80%超えなどしてPCの動作が遅くなってるときも、プロセス一覧のメモリ使用量を合計してもそれが全メモリ使用量と一致せずどのプロセスを止めればいいかわかりません。 リソースモニターを開くとメモリ使用量が40%程度と表示され、こちらでもどのプロセスがメモリを大量消費しているかわかりません。 タスクマネージャーの表記が間違ってるのでしょうか? どうやったらメモリ使用量の多いプロセスを見つけて止めることができるでしょう?

  • Javaでメモリ不足を引き起こす方法

    Javaを使って、システムのメモリ不足を引き起こす方法を考えています。 (動作検証のためで、悪いことを考えているわけではありません^^;) 下記のプログラムでメモリを大量に消費するかなと思ったのですが、 Linux上のvmstatやtopなどで確認してもそれほど変化がありません。 while (true) { Integer[] ii = new Integer[100]; for (int i = 0; i < 100; i++) { ii[i] = new Integer(i); } } Javaの1プロセスが使えるメモリの上限があるので、メモリを食いつぶすプロセスを 大量に実行すれば良いと考えているのですが、メモリを食いつぶす方法が分かりません。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう