Fuite de mémoire native C #

Je soupçonne que mon application de serveur C # (exécutée sur Win Server 2012) a une fuite de mémoire native, probablement à partir d’une des bibliothèques natives que j’utilise. Mon application atteint environ 2,5 Go de mémoire validée après environ 2 semaines de fonctionnement. En regardant une sauvegarde avec WinDbg, je vois 1,9 Go de mémoire native (qui ne cesse d’augmenter). La mémoire gérée n’a pas augmenté au-delà d’un seuil de ± 600 Mo-ish.

Exécuter la commande! Heap -s Je vois que deux segments occupent 1,7 Go de mémoire de tas combinée, inspectant toutefois ces segments avec! Heap -stat -h (en suivant le stream de https://www.codeproject.com/Articles/ 31382 / Memory-Leak-Detection-Using-Windbg ) me montre que le nombre d’octets occupés combinés pour les deux est d’environ 30 Mo, ce qui ne me laisse aucune idée de ce qui pourrait provoquer la fuite.

Je n’ai pas la possibilité de déboguer en direct l’application (connexion avec un profileur, etc.), car elle est en cours de production et une dégradation des performances est hors de question. Malheureusement, ce comportement n’est pas non plus reproductible dans tout autre environnement disponible.

Une de mes premières suppositions était que ce n’était pas une fuite mais plutôt une récupération paresseuse de la mémoire par le système d’exploitation (car aucun autre processus n’exige cette mémoire). Je pourrais vérifier cela en faisant tourner des processus qui consumnt beaucoup de mémoire, mais si je me trompe, mon application tomberait en panne et ce n’est pas une bonne possibilité pour moi 🙂

Y a-t-il une autre façon de comprendre ce qui se passe dans la décharge? Un autre outil peut-être? Toute aide serait grandement appréciée!