ホームページ > バックエンド開発 > C++ > 実行時に C メモリの使用量を正確に監視するにはどうすればよいですか?

実行時に C メモリの使用量を正確に監視するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-06 02:11:11
オリジナル
254 人が閲覧しました

How Can I Accurately Monitor C   Memory Usage at Runtime?

実行時における C でのメモリ使用量の監視

はじめに

実行時に正確なメモリ使用量メトリクスを取得することは、パフォーマンスの最適化とメモリ関連の問題のデバッグにとって重要です。 。この記事では、主に仮想メモリ サイズ (VIRT) と常駐セット サイズ (RES) に焦点を当てて、C アプリケーションでメモリ使用量情報を取得するためのさまざまな方法について説明します。

getrusage() メソッドの使用

getrusage() 関数を最初に使用しようとすると、提供されたコード スニペットに示されているように、多くの場合ゼロ値が取得されます。これは主に、getrusage() が特定のプロセスではなくシステム全体からリソース使用状況情報を取得するためです。

代替解決策: /proc/pid から読み取る

Linux システムでは、より信頼性の高いアプローチ/proc/pid ディレクトリからの情報の読み取りが含まれます。各プロセスには、さまざまな統計が保持される独自の専用ディレクトリがあります。

次のコード スニペットは、/proc/self/stat ファイルを読み取ってプロセスの仮想メモリ サイズ ( vsize) と常駐セット サイズ (rss):

void process_mem_usage(double& vm_usage, double& resident_set)
{
    ifstream stat_stream("/proc/self/stat", ios_base::in);
    unsigned long vsize;
    long rss;
    stat_stream >> vsize >> rss;
    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    vm_usage = vsize / 1024.0;
    resident_set = rss * page_size_kb;
}
ログイン後にコピー

デモ

メイン関数呼び出しprocess_mem_usage() はメモリ使用量情報を取得し、コンソールに出力します:

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

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

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