Category Archives: .NET Core

.NET Memory Internals – záznam a slides [Robert Haken, WUG Days Brno, 6.9.2024]

Záznam z přednášky pro konferenci WUG Days Brno z 6. září 2024, kde jsem ukazoval základy uspořádání paměti v .NET, internals Garbage Collectoru a pokročilý debugging pomocí Windows Debuggeru (WinDbg) a SOS extension.

Téma není zaměřené primárně na novinky, ale jde do hloubky — jak .NET skutečně spravuje paměť, jak to funguje uvnitř a jak se v tom vyznat při pokročilém debuggingu (Memory Dump, WinDbg, SOS).

Zásobník (Stack)

Zásobník je paměť pevné velikosti (defaultně 1 MB na thread), organizovaná pomocí Stack framů. Každé volání metody přidá Stack frame s lokálními proměnnými, parametry a návratovou adresou. Stack je základním mechanismem řízení běhu programu — bez něj by se metody neměly kam vracet. Stack overflow nastává téměř výhradně kvůli nekonečné rekurzi, ne proto, že by aplikace měla příliš hluboký call stack.

Managed Heap a Garbage Collector

.NET runtime si od Windows alokuje nativní paměť a část z ní předá Garbage Collectoru, který ji uspořádá jako managed heap. GC je zodpovědný nejen za uvolňování paměti (jak napovídá název), ale i za samotnou alokaci referenčních typů. Klíčovými koncepty jsou GC Generations (Gen0, Gen1, Gen2) pro generační sběr odpadu a Large Object Heap (LOH) pro velké objekty nad 85 000 bytů.

Windows Debugger (WinDbg) a Memory Dump

WinDbg je mocný, ale uživatelsky nepřívětivý nástroj pro analýzu .NET procesů a Memory Dumpů. Instaluje se přes Microsoft Store. Nejčastější workflow: z Task Manageru vytvoříte Memory Dump (pravé tlačítko → Create memory dump file), soubor načtete do WinDbg a analyzujete. Pro práci s .NET objekty je nezbytná SOS (Son of Strike) extension, která umožňuje zkoumat managed heap, zásobníky threadů a jednotlivé objekty přímo v paměti.

Slides

Novinky v .NET 9 – záznam a slides [Robert Haken, WUG Days Brno, 5.9.2024]

Záznam ze Vzdělávacího okénka HAVIT z 5. září 2024, kde jsem telegraficky představoval novinky přicházející v „.NET 9 vlně“.

Slides

C# & Exceptions – Jak je nepoužívat [Jiří Kanda, HAVIT Vzdělávací okénko, 15.5.2024]

Záznam ze Vzdělávacího okénka HAVIT z 15. května 2024, kde Jiří Kanda povídal o výjimkách v .NET a C#.

Blazor novinky v .NET 8 + Blazor Performance Tuning – záznam a slides [Robert Haken, WUG Dev Day, 4.2.2024]

Záznam ze Vzdělávacího okénka HAVIT z 8. listopadu 2023, kde jsem telegraficky představoval novinky přicházející v „.NET 8 vlně“.

Slides

GraphQL v Blazoru [Alexandr Hájek, Vzdělávací okénko, 29.11.2023]

Záznam ze Vzdělávacího okénka HAVIT, kde Alex Hájek ukazoval, jak se z .NET (ASP.NET Core Blazor klientů) připojujeme na GraphQL API.

Profile Guided Optimization v .NET [Jiří Činčura, Vzdělávací okénko, 22.11.2023]

Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Činčura ukazoval, jaké dochází v .NET 8 k ladění výkonu za běhu pomocí PGO.

Novinky v .NET 8 – záznam a slides [Robert Haken, Vzdělávací okénko, 8.11.2023]

Záznam ze Vzdělávacího okénka HAVIT z 8. listopadu 2023, kde jsem telegraficky představoval novinky přicházející v „.NET 8 vlně“.

Slides

C# & Code Conventions [Jiří Kanda, Vzdělávací okénko, 20.9.2023]

Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval, jaké v HAVITu máme coding-standardy a konvence v C# kódu.

Perly code-review – záznam a slides [Robert Haken, WUG Days 2023.2 Brno]

Slides z mé přednášky 12. září 2023 pro konferenci WUG Days 2023.2 Brno:

.NET Performance Tuning – záznam a dema [Robert Haken, WUG Days 2023.2 Brno]

Záznam z přednášky pro konferenci WUG Days 2023.2 Brno z 11. září 2023.

Starší provedení přednášky, kde je méně profilingu a více ukázek kódu, najdete též na YT:

Demo samotné najdete tradičně na GitHub: https://github.com/hakenr/PerformanceTuningDotnetCoreDemos