Gestion de la mémoire - Compact framework - NotSupportedException

Signaler
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Bonjour,

J'ai besoin de l'aide d'un expert en gestion mémoire sur le compact Framework 2.0 Sp1.
Je fais tourner une "grosse" application sur une cible Windows Ce 6.0.

Cette application lève une NotSupportedException sur une instruction qui n'est jamais la même.
Plus l'application alloue de mémoire sur le tas au démarrage, plus vite elle plantera.
Généralement elle plante sur des appels d'une méthode de la classe mère (base.méthode(); , sans paramètre)

Cette application fonctionnait très bien sous Windows Ce 5.0. Je suis obligé de passé sous Ce 6.0 à cause des limitations logicielles sur la mémoire d'un process sous Ce 5.0.

J'ai comme l'impression que c'est le CLR qui n'a plus assez de mémoire pour interpréter le code.
En effet, j'ai codé une petite application qui joue sur les allocations dans le tas et dans la pile.
- Si une allocation sur le tas est impossible, une OutOfMemoryException est levée.
- Si une allocation sur la pile est impossible, une StackOverflowException est levée.
Mais impossible de reproduire une NotSupportedException.

J'ai essayé de faire fonctionner Remote Monitoring Performance sans succès (certainement à cause d'un bug).
Je n'ai aucun moyen d'espionner la mémoire.

Les seules differences entre ma grosse appli et mon appli de test sont :
- La grosse appli contient du code non managé
- La grosse appli est très orientée objet (beaucoup d'héritage & d'interface).


Je vous demande donc si vous pouvez m'expliquer en détail la gestion mémoire du compact framework, et si vous avez une idée de l'origine de mon Exception.

Merci par avance pour votre aide,

Bruno  

1 réponse

Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Re bonjour.

Au passage, quelqu'un pourrait il m'expliquer la différence entre la valeur "In use" de l'onglet "Memory" dans le panneau de configuration de Windows CE, et la valeur retournée par GC.GetTotalMemory() ?

GC.GetTotalMemory() inclut t'il les allocations dans la pile ou uniquement le tas ?
GC.GetTotalMemory() inclut t'il la mémoire occupée par le framework/CLR ?

En espérant avoir une réponse rapide,

bonne journée à tous !

Bruno