Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater.

Ähnliche Präsentationen


Präsentation zum Thema: "5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater."—  Präsentation transkript:

1 5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater

2

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


Herunterladen ppt "5 Memory Leaks, die auch in Ihrer.NET Anwendung sein könnten André Krämer Softwareentwickler, Trainer, Berater."

Ähnliche Präsentationen


Google-Anzeigen