2010-11-15 2 views
0

J'ai écrit un code qui devrait faire la récupération de place pour les programmes c. Le problème est que j'ai besoin de l'exécuter pour un grand nombre d'objets disons 100 mb alloués dynamiquement.Produit d'analyse de mémoire pour c

Y at-il un outil qui peut m'aider à trouver l'utilisation de la mémoire de mon code c à l'exécution. Il serait très utile si je peux connaître la taille actuelle du tas, ou le nombre de blocs de mémoire alloués, etc. Ceci est de comparer les performances de mon code. Donc, il devrait fonctionner avec mon code ou lui-même l'exécuter.

Si vous ne savez s'il vous plaît dites un peu plus d'informations en ce qui concerne son propre impact lors de l'exécution, etc. Merci beaucoup ... :)

+1

Quel système d'exploitation utilisez-vous? – icecrime

+0

Hey, je suis sur la plate-forme Linux –

Répondre

1

Regardez valgrind. Il fournit une variété d'outils d'analyse de la mémoire, y compris la vérification des fuites et le profilage de tas. Le temps d'exécution dépend de l'outil que vous utilisez; le vérificateur de mémoire complet est lent, car il instrumentalise tous les accès mémoire, mais le profileur de mémoire doit être assez rapide.

3

En général, vous pouvez y parvenir grâce à l'utilisation de votre propre allocateur d'objet assez facilement. Lorsque vous le combinez dans votre bibliothèque de récupération de place, vous pouvez vous assurer que tous les objets GC'd utilisent cet allocateur, afin que vous ne manquiez de rien. Tout ce qui n'est pas explicitement alloué par cet allocateur n'est pas collecté.

1

Si votre bibliothèque C est la glibc, alors la fonction malloc_stats() (déclarée dans malloc.h) affichera un résumé de l'utilisation actuelle de l'erreur standard.

+1

Disponibilité de cette fonction dépend de sa plate-forme. – jer