Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Julius Huber Geändert vor über 8 Jahren
1
5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater
3
Danke, dass Sie alle gekommen sind!
4
Ich habe bereits beim Titel meiner Session gelogen!
5
5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater
6
Klassisches Memory Leak int *array = malloc(sizeof(int) * 100); memset(array,0,sizeof(int) * 100); // use the array // free(array) // ups, vergessen
7
Klassisches Memory Leak int *array = malloc(sizeof(int) * 100); memset(array,0,sizeof(int) * 100); // use the array // free(array) // ups, vergessen
8
Bild: © iStock.com/matt_benoit
9
Bild: © iStock.com/eric1513
10
Wie funktioniert eigentlich der Garbage Collector? * Darstellung nicht 100 % korrekt, dafür aber verständlich ;-)
11
Der CLR garbage collector (GC) ist ein “almost-concurrent, parallel, compacting, mark-and-sweep, generational, tracing GC”
12
?
13
Object reference Stack Heap Mark: Lebende Objekte Identifizieren Ausgehend von einer Wurzel Statische Variable Lokale Variable Finalization Queue
14
Object reference Stack Heap Mark: Lebende Objekte Identifizieren
15
Object reference Stack Heap Sweep: Tote Objekte freigeben
16
Object reference Stack Heap Compact: Objekte zusammen führen
17
Mark – Sweep – Compact ist performancelastig
18
Gen 0Gen 1Gen 2 Generational Garbage Collection (Gen 0 Collection: Start)
19
Gen 0Gen 1Gen 2 Generational Garbage Collection (Gen 0 Collection: Ende)
20
Gen 0Gen 1Gen 2 Generational Garbage Collection (Next Gen 0 Collection: Start)
21
Gen 0Gen 1Gen 2 Generational Garbage Collection (Next Gen 0 Collection: Ende)
22
Gen 0Gen 1Gen 2 Generational Garbage Collection (Gen 1 Collection: Start)
23
Gen 0Gen 1Gen 2 Generational Garbage Collection (Next Gen 0 Collection: Start)
24
Gen 0Gen 1Gen 2 Generational Garbage Collection (Next Gen 0 Collection: Ende)
25
Warum geht trotzdem noch was schief?
26
a) Weil Ihr Kollege was falsch gemacht hat Bild: © iStock.com/NinaMalyna
27
b) Weil Microsoft was falsch gemacht hat Bild: © iStock.com/ThomasTroy
28
Wie finden wir unser Leak?
29
Besser: Ein Memory Profiler
30
Demo Memoy Leaks unter.NET finden Source Code unter http://github.com/AndreKraemer
31
Fazit Melden Sie Event Handler auf länger lebende Objekte ab Meiden Sie statische Dictionaries als Cache Reduzieren Sie die Anzahl dynamisch generierter Assemblies durch Caching oder ähnliches Implementieren Sie INotifyPropertyChanged wenn Sie Databinding nutzen Blockieren Sie den Finalizer nicht!
32
Homepage andre@andrekraemer.deandre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemerhttp://andrekraemer.dehttp://andrekraemer.de/bloghttp://github.com/AndreKraemer Vielen Dank! Blog Xing Facebook Twitter Google+ 32 Vielen Dank an Ben Emmett von Redgate Software für die Unterstützung bei den FolienBen Emmett Redgate Software Sämtliche Abbildung wurden ordnungsgemäß bei IStockPhoto lizensiert.
33
Meine Dienstleistungen Schulungen ASP.NET Xamarin TX Text Control Infragistics NetAdvantage Team Foundation Server Consulting Durchführung von Technologieworkshops Code- / Architekturreviews Analyse von managed Memory Leaks Prototypenentwicklung Remote Entwickler-Support Projektbegleitendes Coaching Softwareentwicklung Mobile Apps (Windows 8, Windows Phone, Android, iOS) Entwicklung von Web-Anwendungen 33
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.