Maison >développement back-end >C++ >Comment puis-je surveiller efficacement l'utilisation de la mémoire du programme C (VIRT et RES) lors de l'exécution ?

Comment puis-je surveiller efficacement l'utilisation de la mémoire du programme C (VIRT et RES) lors de l'exécution ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 21:22:10694parcourir

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

Utiliser C pour obtenir l'utilisation de la mémoire au moment de l'exécution

Cet article explique comment obtenir des informations sur l'utilisation de la mémoire, en particulier VIRT et RES, au moment de l'exécution dans C.

Approche éprouvée et défis

Une tentative utiliser la fonction getrusage pour récupérer ces données n'a donné systématiquement aucun résultat.

Approche alternative utilisant les fichiers /proc

Pour les systèmes Linux, lire les données à partir de "/proc/pid " les fichiers offrent une alternative fiable à ioctl(). Voici un extrait de constructions C démontrant cette approche :

#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;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn