Start here. This is the direct spoken answer to practice first.
Why this question matters
The .NET GC reclaims managed objects that are no longer reachable, while generations optimize for the fact that most allocations die young. Allocation rate, survival, promotion, large objects, and collection pauses still shape service latency and capacity.
In .NET, objects are allocated on the managed heap and the garbage collector frees objects that are no longer reachable from active roots like stacks, statics, and handles. Generations help the runtime collect short-lived objects cheaply because many allocations die young. Gen 0 is collected often, Gen 1 is a middle step, and Gen 2 is for longer-lived objects. I still care about memory because allocation rate, retained references, and large objects can affect latency and throughput.