Bonjour collégues développeurs,

J'ai un soucis avec une application WEB qui s'alloue une quantitée trés importante de mémoire dès qu'elle est executée. On parle ici d'une allocation de 18 235 836 Ko de Virtual Bytes à comparer avec les 107,228 Ko de Private Bytes.

J'ai essayé de debugger l'application en local sur mon PC sans constater de fuite mémoire. Il faut dire qu'elle fait un traitement relativement simple qui consiste en quelques requête peu gourmande en base de données et d'appels au SDK Miscorosft Dynamics. Donc aucun traitement/calcul lours.

Qu'est-ce qui pourrait causer un tel ratio de mémoire utilisée ? comment détecter efficacement les éventuels fuite mémoire ? Une configuration dans IIS peu t-elle causer cela ?

Merci de m'avoir lu et de vos éventuelles réponses,

EDIT :

J'ai trouvé la méthode qui génére cette allocation de mémoire (de maniére trés empirique je dois bien l'avouer)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 private Dictionary<string, string> GetAndDecodeRequestParams(NameValueCollection reqParams)
        {
            try
            {
                var dicParams = new Dictionary<string, string>();
 
                var OgoneKeysParams = ("IP,ORDERID,CURRENCY,AMOUNT,PM,STATUS,CARDNO,ALIAS,ED,CN,TRXDATE,PAYID,NCERROR,BRAND,CCCTY,SHASIGN").Split(',');
 
                foreach (var key in reqParams.AllKeys)
                {
                    if (!dicParams.ContainsKey(key) && OgoneKeysParams.Contains(key.ToUpper()))
                    {
                        dicParams.Add(key.ToUpper(), HttpUtility.UrlDecode(reqParams[key]));
                    }
                }
 
                return dicParams;
            }
            catch
            {
                return null;
            }
        }
Comme vous le constater, le code est plutôt simple, et semble trés gourmand.