February 26-28, 2020
Montreal, Canada

Konrad Kokosa

Konrad Kokosa

Author of the Pro .NET Memory Management book. Programming for over a dozen years, solving performance problems and architectural puzzles in the .NET world, speeding up web applications. Independent consultant, blogger, speaker and fan of Twitter. He also shares his passion as a trainer in the area of .NET, especially about application performance and diagnostics. Microsoft MVP in the Visual Studio and Development Tools category. Co-founder of https://dotnetos.org initiative.

Proposals - Montreal 2020

Why managed memory is fooling us?

We all have been fooled! They told us that automatic memory management will solve all our problems. In managed worlds like .NET, JVM and others there is no memory leak, they said. You will never need to think about freeing memory manually. There is no need to think about memory management at all, they said. And they all lied! In this talk I would like to open your eyes on some low-level stuff that is going inside your applications and runtimes.

Deep dive into the .NET GC

This talk presents a very deep dive into the internals of the .NET GC. After a very short and concise introduction for the beginners, a lot of interesting facts will be presented describing internal workings of the GC with the level of details never presented so far. Those include allocations context, heap balancing, plugs and gaps, concurrent marking and sweeping, and so on, and so forth.

High-performance code design patterns in C#

More and more effort is being seen in .NET ecosystem put into the performance. Quite often we are seeing a new benchmark or blog post about memory allocations being reduced or overall throughput is increased. But how all this is achieved? Can any common code patterns be recognized, named and summarized in a modern C#, at the times of C# 8.0 and .NET Core 3.0? I believe we can provide a kind of Gang Of Four "design patterns" counterpart.

Ref struct, ref readonly, ref returning, ref everything!

Managed pointers, in the form of ref variables, existed in .NET since the very beginning. But only recently they gained much bigger interest - there are such constructs like in parameters, local ref variables and readonly refs. Moreover, recently so-called ref structs were introduced and in the context of Span<T> type one could hear of byref-like instance fields. We can hear about those "ref-something" things a lot, but should one really care?

Writing a custom, real-world .NET GC

Starting with .NET Core 2.1 a new feature called Local GC has been added. It allows you to completely replace the default GC used by the runtime with your own. In this session, after a short introduction about the basics like how one can start and implement custom Allocator, we will start implementing our own Collector. With the help of the exposed API, now everything should be possible, limited only by our own imagination!

Montreal 2020 sponsored by