J'utilise CentOS 7 et j'utilise une application C++. Récemment, je suis passé à une version plus récente d'une bibliothèque que l'application utilisait pour diverses fonctions de l'API C de MySQL. Mais après l'intégration de la nouvelle bibliothèque, j'ai vu une augmentation énorme de l'utilisation de la mémoire du programme, c'est-à-dire que l'application se bloque si elle reste en fonctionnement pendant plus d'un jour ou deux. Précisément, ce qui se passe, c'est que l'utilisation de la mémoire pour l'application commence à augmenter jusqu'à un point où l'application seule utilise 74,9% de la mémoire totale du système, puis elle est arrêtée de force par le système.Vérification de toutes les utilisations de la mémoire pendant l'exécution d'une application C++
Existe-t-il un moyen de suivre l'utilisation de la mémoire de l'ensemble de l'application, y compris les variables statiques. J'ai déjà essayé l'outil de valgrind Massif. Quelqu'un peut-il me dire quelles pourraient être les raisons possibles de l'utilisation accrue de la mémoire ou des outils qui peuvent me donner un aperçu de la façon dont la mémoire est allouée (à la fois statique et dynamique). Y at-il un outil qui peut nous parler de l'allocation de mémoire pour une application C++ fonctionnant dans un environnement Linux?
Merci d'avance!
Valgrind devrait être l'outil idéal pour l'analyse de ce type de problème, qui semble être une fuite de mémoire classique. –
@ Torbjörn, J'ai aussi vérifié avec valgrind et la différence d'allocation de mémoire dans la section HEAP SUMMARY qui se présente pour l'exécution de l'application est d'environ 1 Go pour des durées d'exécution d'environ 10 minutes. – Abhinav
Vous pouvez également remplacer le nouvel opérateur global et supprimer les opérateurs. Je l'ai déjà fait pour conserver un cache des pointeurs mémoire alloués par tas qui ne sont pas encore supprimés. Puis un fil séparé qui imprime cette information toutes les quelques minutes. – Dennis