Bonjour,
Moi aussi j'ai des gros problèmes de fuite mémoire sur Silverlight. Du coup je passe un peu de mon temps à les traquer...
L'application que je fais est une application de gestion très riche.
Pour mesurer l'impacte de mes modifications sur la mémoire j'ai un TextBlock en haut de mon applis qui affiche la mémoire prise.
Attention GC.GetTotalMemory(false) peut faire lagguer l'applis.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #if DEBUG _timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 0, 1) }; _timer.Tick += TimerTick; _timer.Start(); #endif #if DEBUG private static string GetFormattedFileSize(long size) { var suffixes = new[] { "octets", "Ko", "Mo", "Go", "To" }; double tmpSize = size; var i = 0; while (tmpSize >= 1024) { tmpSize /= 1024.0; i++; } // arrondi à 10^-2 tmpSize *= 100; tmpSize = (long)(tmpSize + 0.5); tmpSize /= 100; return tmpSize + " " + suffixes[i]; } void TimerTick(object sender, EventArgs e) { tb_MessageDujour.Text = GetFormattedFileSize(GC.GetTotalMemory(false)); } void StoryboardCompleted(object sender, EventArgs e) { var storyboard = Resources["StoryBoardMessage"] as Storyboard; storyboard.Begin(); } #endif
Il ne faut pas trop l'appeler^^.
J'ai aussi ce lien pour utiliser Windbg pour les traquer :
http://dotnetspeak.com/index.php/201...-applications/
Sur ma machine en 64 bits j'ai pas réussit à faire marcher windbg, mais par contre en 32 j'y arrive.
Le lien expliquant que INotifyDataErrorInfo génére des fuite mémoire :
http://baud.cz/blog/memory-leak-in-s...ydataerrorinfo
Les DataTemplates écrit en mode inline génére aussi des fuites mémoire aussi.
Honnêtement, la technologie a l'air bonne, mais c'est vraiment inacceptable de devoir passer autant de temps a fixé des bug dans le runtime.
On passe déjà assez de temps à créer les notre.^^
Si on créait un post it dans le forum recensant tout les choses à ne pas faire pour créer des fuites mémoire en Silverlight, et les techniques pour les "traquer"?
EDIT:
Liens de mon anciens post sur les fuites mémoire:
http://www.developpez.net/forums/d88...fuite-memoire/