Bonjour à tous,
J'ai un soucis de fuites mémoire dans mon appli C# qui semble lié au fait que je fais appel à une API qui me renvoie une liste d'objets COM.
Ci-dessous un exemple simplifié de mon code :
A l’exécution, le code ci-dessus consomme de plus en plus de mémoire jusqu'à lever une exception "OutOfMemory". Par contre, si je décommente les lignes GC.*, l'utilisation de la mémoire reste stable.
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 public static ReadOnlyCollection<APICOMObject> GetBOObjectsByVolume(int iCounter) { MyAPIFilter oVolumeFilter = new MyAPIFilter(iCounter); ReadOnlyCollection<BusinessObject> _retVal = oVolumeFilter.Apply(); } ReadOnlyCollection<APICOMObject> _listeObj; for (int icpt = 0; icpt < 1000; icpt++) { _listeObj = GetBOObjectsByVolume(icpt); //GC.Collect(); //GC.WaitForPendingFinalizers(); //GC.Collect(); }
Du coup, je ne sais pas trop comment gérer mon soucis de manière propre : il ne me semble pas très propre de forcer l'appel au garbage collector.
Merci d'avance...
Partager