Knowing the idea and main benefits of JIT compilation from the previous post, we’ll now see how it fits into .NET applications execution model.
By execution model I mean a process of having a .NET Framework application actually executed on the machine (CPU), starting from having its source code written. It contains all steps and actions necessary to happen in order to transform source code (like C#) into machine (assembly) code and execute it.
So far within the .NET Internals series we focused on Small Object Heap (SOH). We know, for instance, that the LOH is not compacted (by default) during garbage collection. So how is it actually handled by the GC?
Today we’re going to see how unmanaged resources are handled by .NET, what are finalization and fReachable queues and what’s the garbage collector’s role in it. We’ll also get to know what is a dispose pattern and see how to implement it.
Continuing .NET Internals series on the blog, today we’re going to see what is generational garbage collection. You’ll also get to know what is a card table data structure and for what it’s used 🙂
Today, in the next article from .NET Internals series on my blog, we’re going to investigate how the garbage collector (GC) actually releases the memory (which is its main purpose as could be read here), what is marking phase and how the managed heaps are compacted in order to optimize the process. We’ll also see when may the collection be triggered.
In the next, 4th post from .NET Internals series, we’re going to meet a new friend called Garbage Collector, discuss this guy’s main responsibilities and see what is memory allocation in .NET applications and how it works.
Ready? Let’s start then! 😉
In the second post of .NET Internals series, we’re going to investigate the organization of .NET process’s memory. We’ll see what is stack and heap and what kind of data is stored on each of these memory structures.