Pro .NET Memory Management: Speicherverwaltung in .NET
800 Seiten
German
PDF
4.5

Pro .NET Memory Management: Speicherverwaltung in .NET

Pro .NET Memory Management: Speicherverwaltung in .NET

Autor:

Jahr:

Zusammenfassung:

Einleitung

Das Buch Pro .NET Memory Management (Konrad Kokosa, 2018, 800 Seiten) ist wohl das tiefgründigste und detaillierteste technische Nachschlagewerk zur Speicherverwaltung im .NET-Ökosystem. Geschrieben von einem der führenden Experten im Bereich .NET-Leistung, enthüllt es die innere Funktionsweise des Garbage Collectors (GC), Caches, Speicherpools und der Low-Level-Mechanismen der CLR. Obwohl das Buch auf C# und .NET ausgerichtet ist, sind seine Konzepte (Referenzverwaltung, Fragmentierung, Objektgenerationen) für jeden Entwickler nützlich, der mit verwalteten Sprachen arbeitet. Auf der Website PythonLib empfehlen wir es allen, die aufhören möchten zu raten, warum eine Anwendung „langsam“ ist, und stattdessen verstehen möchten, wie Speicher tatsächlich funktioniert.

Worum geht es in diesem Buch

Das Buch ist in drei logische Teile gegliedert. Der erste Teil führt in die Grundlagen ein: Architektur des virtuellen Speichers unter Windows/Linux, Datentypen in .NET (Wert/Referenz), Stack und Heap, der innere Aufbau von Objekten. Der zweite Teil ist das Herzstück des Buches: eine äußerst detaillierte Analyse des Garbage Collectors (Workstation GC, Server GC, Hintergrund-Garbage Collections, Generationen 0/1/2, Large Object Heap, Finalisierung, schwache Referenzen). Der dritte Teil widmet sich praktischen Aspekten: Profilerstellung, Speicherabbilder (Dumps), Diagnose von Speicherlecks, Konfiguration von GC-Parametern, Verwendung von Span<T> und Memory<T>, Objektpools und nativer Speicher.

Für wen ist dieses Buch

Das Buch richtet sich an erfahrene C#-Entwickler (Middle/Senior), die bereits auf Leistungsprobleme gestoßen sind oder verstehen möchten, wie die Plattform auf niedriger Ebene funktioniert. Für Anfänger wird es schwierig sein – es werden Kenntnisse der C#-Grundlagen, der CLR und grundlegender Betriebssystemkonzepte vorausgesetzt. Das Buch ist auch für DevOps-Ingenieure und Architekten nützlich, die für die Konfiguration von Produktionsumgebungen verantwortlich sind.

Was der Leser lernen wird

  • Wie der verwaltete Heap (Managed Heap) aufgebaut ist – Generationen, Segmente, Markierungsbits (Mark Bits).
  • Mechanismen der Garbage Collection – Mark-Sweep-Compact, Arbeit mit Finalizern, LOH-Kompaktierung.
  • Wie man Speicherlecks vermeidet – typische Muster (Ereignisse, statische Referenzen, P/Invoke).
  • Wie man den GC konfiguriert – Konfigurationsparameter, Modi (Workstation/Server), Auswirkungen auf die Latenz.
  • Moderne APIs – Span<T>, Memory<T>, ArrayPool, MemoryPool.
  • Profiling-Tools – PerfView, WinDbg, dotMemory, ETW-Tracing.
  • Analyse von Speicherabbildern (Dumps) – Suche nach den Ursachen von Speicherlecks, Anzeige von Objekttypen und -größen.

Stärken

Der größte Vorzug des Buches ist seine Tiefe. Konrad Kokosa wiederholt nicht einfach die Dokumentation, sondern erklärt, warum der GC bestimmte Entscheidungen trifft, wie der Write Barrier funktioniert, was „Card Tables“ sind und wie sie die Leistung beeinflussen. Das Buch enthält zahlreiche Schemata, Diagramme und Codebeispiele in C# (mit Kommentaren auf Assembler-Ebene). Besonders hervorzuheben sind die Kapitel zur Diagnose – sie machen das Buch zu einem praktischen Leitfaden für die Optimierung. Das Buch ist auch für .NET Core relevant (obwohl es 2018 erschienen ist, haben sich viele Mechanismen nicht geändert).

Empfehlung

Wir bei PythonLib empfehlen dieses Buch allen, die hochlastige Dienste, Spiele mit Unity (auch dort wird .NET verwendet) entwickeln oder sich mit der Refaktorierung von Legacy-Code befassen. Wenn Sie verstehen möchten, warum eine Anwendung 2 GB Speicher verbraucht, obwohl es 200 MB sein sollten – dieses Buch gibt die Antwort. Es ist auch für Dozenten von .NET-Kursen nützlich, die ein Kapitel „Speicherverwaltung“ in ihr Programm aufnehmen möchten.

Fazit: Pro .NET Memory Management ist kein Buch für den Strand. Es ist ein technisches Nachschlagewerk, das auf dem Schreibtisch jedes ernsthaften .NET-Entwicklers stehen sollte. Es erfordert gründliches Studium, zahlt sich aber hundertfach aus: Nach der Lektüre werden Sie Code mit anderen Augen sehen, und Ihre Anwendungen werden schneller und stabiler.

Empfehlungen