Je travaille sur une grande bibliothèque COM (ArcObjects) et j'essaie d'identifier une fuite de mémoire.
Quelle est la méthode la plus fiable pour déterminer la quantité de mémoire utilisée par le code/les objets non gérés.
Quels compteurs de performance peuvent être utilisés?Comment faire pour déterminer la quantité de mémoire utilisée par le code non managé
Répondre
Le compteur 'Octets virtuels' pour un processus représente la quantité totale de mémoire réservée par le processus. Si vous avez une fuite de mémoire, la tendance sera à la hausse.
Utilisez UMDH pour obtenir un instantané de votre segment de mémoire, exécutez-le deux fois puis utilisez les outils pour afficher toutes les allocations qui se sont produites entre les deux instantanés. C'est génial pour vous aider à repérer les zones qui pourraient fuir.
This article explique en termes simples.
Je vous suggère d'utiliser un CComPtr <> pour envelopper vos objets, sans oublier que vous devez le relâcher avant de le passer dans une fonction qui renvoie une référence de pointeur brut (car l'opérateur de distribution sera utilisé pour obtenir le pointeur est écrasé)