Maison >développement back-end >C++ >Comment puis-je récupérer avec précision l'utilisation de la mémoire d'exécution d'un programme C sous Linux ?
Récupération de l'utilisation de la mémoire d'exécution en C avec /proc/pid
En C, obtenir des informations sur l'utilisation de la mémoire d'un programme au moment de l'exécution peut être difficile . Malgré les tentatives utilisant getrusage(), l'affiche rencontrait systématiquement des valeurs nulles. Il existe une approche alternative qui consiste à interroger les fichiers dans le répertoire /proc/pid.
Sur les systèmes Linux, /proc/pid contient des informations spécifiques au processus, y compris l'utilisation de la mémoire. L'un des fichiers les plus fiables à cet effet est /proc/self/stat. En analysant ce fichier, nous pouvons extraire les champs suivants :
Pour récupérer ces valeurs, nous pouvons utiliser la méthode process_mem_usage() function :
void process_mem_usage(double& vm_usage, double& resident_set) { // Parse /proc/self/stat ifstream stat_stream("/proc/self/stat"); stat_stream >> ... >> vsize >> rss; stat_stream.close(); // Convert to KB long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; vm_usage = vsize / 1024.0; resident_set = rss * page_size_kb; }
Dans notre fonction main(), nous pouvons utiliser process_mem_usage() pour imprimer l'utilisation de la mémoire virtuelle et la taille de l'ensemble résident :
int main() { double vm, rss; process_mem_usage(vm, rss); cout <p>En utilisant cette approche, nous pouvons obtenir avec précision les informations sur l'utilisation de la mémoire du programme en cours au moment de l'exécution.</p>
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!