2012-07-25 5 views
0

J'ai un processus qui fonctionne en Solaris en continu. L'utilisation de mémoire de tas du processus ne cesse d'augmenter au fil du temps et lorsqu'elle dépasse 4 Go, traite les vidages de mémoire.Analyse de mémoire de tas

J'ai essayé d'exécuter le processus avec Purify, mais je n'ai trouvé aucun code qui faille vraiment la mémoire.

Existe-t-il un moyen d'analyser quel code est responsable de l'utilisation accrue de la mémoire de tas? L'utilisation de mémoire de tas du processus augmente de 4 Mo ou 8 Mo toutes les 15 minutes et il ne diminue jamais.

J'ai utilisé la commande pmap pour vérifier l'utilisation de la mémoire de tas de processus.

+0

Il se peut que vous ne fassiez pas de mémoire, mais que vous gardiez un pointeur, quelque part. Purify pensera alors que c'est ok. –

+0

@BoPersson Parlez-vous des pointeurs pendants? – cppcoder

+0

Non, ils ne pendent pas si vous oubliez de supprimer certains d'entre eux. Comme construire une longue liste, et ajouter des choses mais certaines ne sont jamais supprimées. –

Répondre

0

je serais connecter à un fichier tous les appels à new et delete avec l'emplacement qu'ils sont appelés à découvrir whene les new fonctions sont appelées sans correcsponding delete est appelée. Peut-être avez-vous des boucles circulaires dans le tas.

+0

Qu'est-ce qu'une boucle circulaire? – cppcoder

+0

@cppcoder - Lorsqu'un objet pointe vers un autre objet et que cet objet pointe directement ou indirectement vers le premier objet. –

Questions connexes