ホームページ > バックエンド開発 > C++ > Linux で C プログラムのメモリ使用量を監視するにはどうすればよいですか?

Linux で C プログラムのメモリ使用量を監視するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-20 02:28:13
オリジナル
695 人が閲覧しました

How Can I Monitor a C   Program's Memory Usage in Linux?

C で実行中のプログラムのメモリ使用量を監視する方法

実行時のメモリ消費量の推定は、アプリケーションのパフォーマンスを最適化し、メモリ リークを防ぐために重要です。 C は、特定の要件に対応してメモリ使用量情報を取得するための複数のアプローチを提供します。

頻繁に使用される方法の 1 つは、プロセスのリソース使用率に関するデータを取得する getrusage 関数を利用することです。ただし、場合によっては、このアプローチを使用して正確な結果を取得することが困難になることがあります。

Linux 環境の代替ソリューション

Linux システムの場合、代替戦略には、以下のファイルにアクセスすることが含まれます。 /proc/pid ディレクトリ。各ファイルには、システム プロセスに関連するさまざまな情報が表示されます。次のコード スニペットは、仮想メモリ サイズ (VM) と常駐セット サイズ (RSS) の両方をキロバイト (KB) 単位で取得する方法を示しています。

#include <unistd.h>
#include <ios>
#include <iostream>
#include <fstream>
#include <string>

void process_mem_usage(double& vm_usage, double& resident_set) {
    std::ifstream stat_stream("/proc/self/stat", std::ios_base::in);

    unsigned long vsize;
    long rss;

    stat_stream >> vsize >> rss; // Skipping irrelevant fields

    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    vm_usage = vsize / 1024.0;
    resident_set = rss * page_size_kb;
}
ログイン後にコピー

使用例

このメソッドを利用するには、process_mem_usage 関数をプログラムに統合し、それを呼び出して現在のメモリを取得します。 use:

int main() {
    double vm, rss;
    process_mem_usage(vm, rss);
    std::cout << "VM: " << vm << "; RSS: " << rss << std::endl;
}
ログイン後にコピー

このアプローチは、メモリ使用量の信頼できる推定値を提供し、他の方法で発生する制限を補います。

以上がLinux で C プログラムのメモリ使用量を監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート