Pro .NET Memory Management : gestion de la mémoire dans .NET
800 pages
French
PDF
4.5

Pro .NET Memory Management : gestion de la mémoire dans .NET

Pro .NET Memory Management : gestion de la mémoire dans .NET

Auteur :

Année :

Résumé :

Introduction

Le livre Pro .NET Memory Management (Konrad Kokosa, 2018, 800 pages) est sans doute le guide technique le plus profond et le plus détaillé sur la gestion de la mémoire dans l'écosystème .NET. Écrit par l'un des plus grands experts en performance .NET, il dévoile le fonctionnement interne du garbage collector (GC), des caches, des pools de mémoire et des mécanismes bas niveau du CLR. Bien que le livre soit destiné à C# et .NET, ses concepts (gestion des références, fragmentation, générations d'objets) seront utiles à tout développeur travaillant avec des langages gérés. Sur le site PythonLib, nous le recommandons à tous ceux qui veulent cesser de deviner pourquoi l'application « rame » et commencer à comprendre comment la mémoire fonctionne réellement.

De quoi parle ce livre

Le livre est divisé en trois parties logiques. La première partie présente les bases : architecture de la mémoire virtuelle Windows/Linux, types de données dans .NET (value/reference), pile et tas, structure interne des objets. La deuxième partie est le cœur du livre : une analyse très détaillée du garbage collector (Workstation GC, Server GC, collectes en arrière-plan, générations 0/1/2, Large Object Heap, finalisation, références faibles). La troisième partie est consacrée aux aspects pratiques : profilage, dumps, diagnostic des fuites, configuration des paramètres GC, utilisation de Span<T> et Memory<T>, pools d'objets et mémoire native.

À qui s'adresse ce livre

Ce livre est destiné aux développeurs C# expérimentés (middle/senior) qui ont déjà rencontré des problèmes de performance ou qui souhaitent comprendre le fonctionnement bas niveau de la plateforme. Les débutants auront du mal — une connaissance de base de C#, du CLR et des concepts fondamentaux du système d'exploitation est présupposée. Ce livre sera également utile aux DevOps et aux architectes responsables de la configuration des environnements de production.

Ce que le lecteur apprendra

  • Comment fonctionne le managed heap — générations, segments, cartes de marquage (mark bits).
  • Les mécanismes du garbage collection — mark-sweep-compact, travail avec les finaliseurs, compaction LOH.
  • Comment éviter les fuites mémoire — schémas typiques (événements, références statiques, P/Invoke).
  • Comment configurer le GC — paramètres de configuration, modes (Workstation/Server), impact sur la latence.
  • Les API modernes — Span<T>, Memory<T>, ArrayPool, MemoryPool.
  • Les outils de profilage — PerfView, WinDbg, dotMemory, traçage ETW.
  • L'analyse des dumps — recherche des racines des fuites, visualisation des types et de la taille des objets.

Points forts

Le principal atout de ce livre est sa profondeur. Konrad Kokosa ne se contente pas de répéter la documentation, il explique pourquoi le GC prend certaines décisions, comment fonctionne le write barrier, ce que sont les « tables de cartes » (card tables) et comment elles affectent les performances. Le livre contient de nombreux schémas, diagrammes et exemples de code en C# (avec des commentaires au niveau assembleur). Il faut également souligner les chapitres sur le diagnostic — ils transforment le livre en un guide pratique d'optimisation. Le livre est également pertinent pour .NET Core (bien qu'il soit sorti en 2018, de nombreux mécanismes n'ont pas changé).

À qui est-il recommandé

Nous, sur PythonLib, recommandons ce livre à tous ceux qui écrivent des services à forte charge, des jeux sur Unity (qui utilise aussi .NET), ou qui effectuent du refactoring de code legacy. Si vous voulez comprendre pourquoi une application consomme 2 Go de mémoire alors qu'elle devrait en consommer 200 Mo — ce livre vous donnera la réponse. Il sera également utile aux enseignants de cours .NET qui souhaitent ajouter une section « Gestion de la mémoire » à leur programme.

Conclusion : Pro .NET Memory Management n'est pas un livre à lire à la plage. C'est un guide technique qui devrait se trouver sur le bureau de tout développeur .NET sérieux. Il nécessite une lecture attentive, mais il est largement rentabilisé : après l'avoir lu, vous verrez le code différemment et vos applications seront plus rapides et plus stables.

Recommendations