/proc/pid を使用した C での実行時のメモリ使用量の取得
C では、実行時のプログラムのメモリ使用量に関する情報を取得するのが困難な場合があります。 getrusage() を使用しようとしたにもかかわらず、投稿者は常にゼロ値に遭遇しました。 /proc/pid ディレクトリ内のファイルをクエリするという代替アプローチも存在します。
Linux システムでは、/proc/pid にはメモリ使用量などのプロセス固有の情報が含まれています。この目的で最も信頼できるファイルの 1 つは /proc/self/stat です。このファイルを解析すると、次のフィールドを抽出できます。
これらの値を取得するには、 process_mem_usage() 関数:
void process_mem_usage(double& vm_usage, double& resident_set) { // Parse /proc/self/stat ifstream stat_stream("/proc/self/stat"); stat_stream >> ... >> vsize >> rss; stat_stream.close(); // Convert to KB long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; vm_usage = vsize / 1024.0; resident_set = rss * page_size_kb; }
main() 関数内で、 process_mem_usage() を使用して仮想メモリの使用量と常駐セットのサイズを出力できます:
int main() { double vm, rss; process_mem_usage(vm, rss); cout << "VM: " << vm << "; RSS: " << rss << endl; }
このアプローチを使用しますを使用すると、実行時に現在のプログラムのメモリ使用量情報を正確に取得できます。
以上がLinux 上で C プログラムのランタイム メモリ使用量を正確に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。