Course curriculum

  • 01

    .NET runtime

    • Introduction

    • .NET runtime - IL, JIT, assembler

    • Homework

  • 02

    Types basics

    • Value vs reference type - layout, passing by value and reference

    • Stack vs heap

    • null/NullReferenceException

    • Array/list of classes/structs

    • Homework

  • 03

    Memory management fundamentals

    • Automatic memory management

    • Pauses/throughput/latency/aggressiveness

    • Your performance goal? Don't guess, measure

    • Homework

  • 04

    .NET GC fundamentals

    • GC in .NET

    • GC modes, latency modes and other settings

    • Homework

  • 05

    Diagnostic tools

    • Intro

    • Events

    • Event Tracing for Windows (ETW)

    • Linux Trace Toolkit Next Generation (LTTng)

    • EventPipes & CLI Diagnostic Tools

    • Homework

  • 06

    Diagnostic tools - part 2

    • Counters

    • Dumps

    • Profilers & Application Performance Monitoring

    • Cloud & containers

    • Homework

  • 07

    Roots and generations

    • Generations and other heaps

    • Roots

    • Homework

  • 08

    The GC internals

    • Operating system cooperation

    • The GC partitioning internals

    • The GC phases internals

    • Homework

  • 09

    Typical problems

    • Memory leak - because of no GCs

    • Memory leak - because of fragmentation

    • Memory leak - because of roots

    • Mid-life crisis and Nepotism

    • Homework

  • 10

    Mentors

    • Andrey Akinshin

    • Christophe Nasarre

    • Konrad Kokosa - live Q&A

  • 11

    Allocations under control

    • Measuring and self-measuring

    • Reducing allocations - hidden allocations

    • Reducing allocations - pooling

    • Reducing allocations - structs

    • Reducing allocations - strings

    • Homework

  • 12

    Lifetime management

    • Finalization

    • Disposable objects

    • IoC containers

    • Weak references

    • Homework

  • 13

    Advanced topics and APIs

    • Managed pointers

    • Span and Memory

    • Unsafe class

    • Pipelines

    • Homework

  • 14

    Data Oriented Design

    • Hardware - memory, cache, CPU

    • Object layout vs cache

    • Access patterns

    • Homework

  • 15

    Interoperability

    • Pinning

    • Off the heap

    • Function pointers

    • Homework