ホームページ >バックエンド開発 >C++ >実行時に C プログラムのメモリ使用量 (VIRT および RES) を効率的に監視するにはどうすればよいですか?

実行時に C プログラムのメモリ使用量 (VIRT および RES) を効率的に監視するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 21:22:10694ブラウズ

How Can I Efficiently Monitor C   Program Memory Usage (VIRT and RES) at Runtime?

C を使用して実行時にメモリ使用量を取得する

この記事では、実行時にメモリ使用量情報、特に VIRT と RES を取得する方法を調査します。 C .

試したアプローチと課題

このデータを取得するために getrusage 関数を利用しようとすると、結果は一貫してゼロでした。

/proc ファイルを使用した代替アプローチ

Linux システムの場合、「/proc/pid」ファイルからのデータの読み取りは、ioctl() に代わる信頼性の高い方法となります。このアプローチを示す C 構造のスニペットを次に示します。

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

void process_mem_usage(double& vm_usage, double& resident_set)
{
    vm_usage = 0.0;
    resident_set = 0.0;

    ifstream stat_stream("/proc/self/stat", ios_base::in);
    
    string vsize, rss;
    stat_stream >> vsize >> rss;
    stat_stream.close();

    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    vm_usage = stod(vsize) / 1024.0;
    resident_set = stod(rss) * page_size_kb;
}

int main()
{
    double vm, rss;
    process_mem_usage(vm, rss);
    std::cout << "VM: " << vm << "; RSS: " << rss << std::endl;
}

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。