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
Libérer: 2024-12-05 21:22:10
original
725 Les gens l'ont consulté

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal