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