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 サイトの他の関連記事を参照してください。