Comment surveiller l'utilisation de la mémoire d'un programme en cours d'exécution en C
L'estimation de la consommation de mémoire pendant l'exécution est cruciale pour optimiser les performances des applications et prévenir les fuites de mémoire . C propose plusieurs approches pour récupérer des informations sur l'utilisation de la mémoire, répondant à des exigences spécifiques.
Une méthode fréquemment utilisée consiste à exploiter la fonction getrusage, qui récupère des données sur l'utilisation des ressources d'un processus. Cependant, dans certains cas, les utilisateurs rencontrent des difficultés à obtenir des résultats précis avec cette approche.
Solution alternative pour les environnements Linux
Pour les systèmes Linux, une stratégie alternative consiste à accéder aux fichiers contenus dans le répertoire /proc/pid. Chaque fichier présente diverses informations liées aux processus système. L'extrait de code suivant illustre comment obtenir à la fois la taille de la mémoire virtuelle (VM) et la taille de l'ensemble résident (RSS) en kilo-octets (Ko) :
#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; }
Exemple d'utilisation
Pour utiliser cette méthode, intégrez la fonction process_mem_usage dans votre programme et appelez-la pour récupérer la mémoire actuelle utilisation :
int main() { double vm, rss; process_mem_usage(vm, rss); std::cout << "VM: " << vm << "; RSS: " << rss << std::endl; }
Cette approche fournit des estimations fiables de l'utilisation de la mémoire, complétant les limitations rencontrées avec d'autres méthodes.
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!