Techdays 2010 - Jour 2 - Détecter et éviter les fuites de mémoire et de ressources dans les applications .NET
Par Cédric Leca, vendredi 12 février 2010 à 01:20 :: .Net :: #146 :: rss
Commençons par le début :
Définition :
En informatique, une fuite de mémoire est un type particulier de consommation non intentionnelle de mémoire par un programme qui ne libère pas comme il le devrait la mémoire dont il n'a plus besoin.
Dans un système informatique, une petite fuite qui se répète de manière indéfinie peut avoir de gros impact sur les performances.
Les langages qui présentent une gestion automatisée de la mémoire, tels Java, C#, VB.NET ou LISP, ne sont pas immunisés contre les fuites de mémoire.
Le garbage collector récupère uniquement la mémoire qui n'est plus accessible. Il ne libère pas la mémoire tant qu'elle reste accessible.En .NET, cela signifie que des objets accessibles par au moins une référence ne seront par relâchés par le garbage collector.
Détection d'une fuite de mémoire :
Le symptôme le plus visible, c'est la mémoire allouée ("octets privés") au programme qui ne cesse d'augmenter et qui peut prendre une grande ampleur avant que le système coupe de lui-même le programme fautif.
Plusieurs outils pour différentes approches :
- Le moniteur de performance Windows ou
perfmon
permet entre autre de visualiser de manière globale les octets privés associés à un processus en particulier.
- Vue haut niveau, audit général : dotTrace, il permet le profilage complet de votre application à condition de le laisser lancer votre application.
- Plus en détail : .NET Memory Profiler, très graphique et très complet.
- Pour les explorateurs : WinDbg, tout en ligne de commande, il vous permet d'entrer dans le coeur de votre processus et d'analyser des
dump
mémoires.



Faire de la prévention :
Plusieurs causes à ces fuites de mémoires :- Références statiques
- Evénements statiques

- Evénements sans désabonnement
- Dispose pas appelé

Les moyens pour prévenir ces fuites de mémoires :
- Contrôler la possession des objets
- Analyse statique (NDepend, …)
- Mais avant tout une bonne connaissance de son code
- Chaque += (ou AddHandler) est un ennemi en puissance !
- -= !
- using et Dispose
- WeakEvents
- EventBroker
- Ou tout simplement relancer l’appli…
OUTILS :
Outils dédiés au profilage en .NET
dotTrace, .NET Memory Profiler, ANTS Profiler, YourKit Profiler, PurifyPlus, Aqtime, CLR Profiler, …
http://sharptoolbox.com/categories/profilers-debuggers
WinDbg, SOS.dll, linqdbg
http://www.microsoft.com/whdc/devtools/debugging/
http://code.google.com/p/linqdbg/
VMMap
http://sysinternals.com
Bear, GDI Usage
http://thesz.diecru.eu/content/bear.php
http://msdn.microsoft.com/en-us/magazine/cc301756.aspx
source: Présentation TechDays 2010
TechDays 2010 session slides and source code

Commentaires
1. Le mercredi 7 avril 2010 à 07:54, par Music Search
2. Le mercredi 14 avril 2010 à 08:48, par location utilitaire
3. Le jeudi 15 avril 2010 à 08:51, par machine a pain
4. Le vendredi 16 avril 2010 à 10:24, par sonnerie portable gratuit
5. Le samedi 17 avril 2010 à 10:52, par sonnerie portable gratuit
6. Le jeudi 29 avril 2010 à 07:09, par labatterie
7. Le jeudi 29 avril 2010 à 22:50, par shemale cams
8. Le dimanche 2 mai 2010 à 09:11, par Jeux de motocross
9. Le dimanche 2 mai 2010 à 09:12, par Vidéos drôles
10. Le mardi 11 mai 2010 à 12:25, par Dissertation Writing Service
11. Le jeudi 20 mai 2010 à 03:47, par Forex Trading software
12. Le jeudi 27 mai 2010 à 09:19, par pronostic coupe du monde
13. Le mercredi 2 juin 2010 à 10:13, par pronostic
14. Le dimanche 6 juin 2010 à 12:38, par buy cheap viagra
15. Le dimanche 6 juin 2010 à 12:39, par vigrx
16. Le lundi 7 juin 2010 à 20:07, par acai berry select
17. Le jeudi 17 juin 2010 à 11:00, par free best buy gift card
18. Le lundi 28 juin 2010 à 04:00, par Dissertation Writng
19. Le mercredi 7 juillet 2010 à 02:40, par moncler jackets
20. Le jeudi 15 juillet 2010 à 15:42, par Oxy
21. Le mercredi 21 juillet 2010 à 14:26, par Maillot de bain grande taille
22. Le samedi 24 juillet 2010 à 07:23, par business logo designs
23. Le lundi 26 juillet 2010 à 10:06, par batterie
24. Le lundi 26 juillet 2010 à 10:06, par labatterie
25. Le lundi 26 juillet 2010 à 10:08, par Rolex watches
26. Le lundi 26 juillet 2010 à 10:09, par r4 ds
27. Le jeudi 29 juillet 2010 à 12:05, par nfl jerseys
28. Le vendredi 30 juillet 2010 à 03:23, par placement argent
29. Le vendredi 30 juillet 2010 à 13:06, par wholesale nfl jerseys
30. Le vendredi 6 août 2010 à 03:15, par JORDAN SHOES
31. Le lundi 9 août 2010 à 15:31, par location voiture Marrakech
32. Le vendredi 13 août 2010 à 00:47, par Work Injury Lawyer
33. Le lundi 16 août 2010 à 06:57, par Nike Shox Rivalry
34. Le lundi 16 août 2010 à 06:58, par Nike Rifts Men
35. Le lundi 16 août 2010 à 06:59, par Nike Air Rifts
36. Le lundi 16 août 2010 à 07:00, par Vertu Ascent Ti
37. Le mercredi 18 août 2010 à 09:40, par DVD Ripper
38. Le mercredi 18 août 2010 à 09:41, par DVD Ripper
39. Le jeudi 19 août 2010 à 02:24, par Cheap Nike Air Max
40. Le lundi 23 août 2010 à 22:14, par Car Accident Solicitor
41. Le mardi 24 août 2010 à 01:18, par Moroccan furniture
42. Le mercredi 25 août 2010 à 03:18, par Backlinks building
43. Le jeudi 26 août 2010 à 02:22, par Blair Oliver Scott
44. Le vendredi 27 août 2010 à 11:09, par cheap jerseys
45. Le samedi 28 août 2010 à 00:55, par Atlanta divorce lawyer
46. Le lundi 30 août 2010 à 02:31, par Nike Air Max Shoes
47. Le mardi 31 août 2010 à 14:18, par Iqor
48. Le mercredi 1 septembre 2010 à 13:38, par jouer casino
49. Le jeudi 2 septembre 2010 à 04:44, par dfd
50. Le vendredi 3 septembre 2010 à 03:07, par ll
51. Le lundi 6 septembre 2010 à 03:05, par NFL jerseys
52. Le lundi 6 septembre 2010 à 05:53, par omega watches
53. Le lundi 6 septembre 2010 à 10:37, par Offshoreally
54. Le jeudi 9 septembre 2010 à 02:49, par Mesothelioma
55. Le jeudi 9 septembre 2010 à 12:04, par NCO Europe
56. Le jeudi 9 septembre 2010 à 15:13, par pronostic sportif
57. Le jeudi 9 septembre 2010 à 15:18, par france poker en ligne
Ajouter un commentaire