In this chapter, we first learned about the life cycle of managed objects, including garbage collection, the three generations of objects, and the Large Object Heap.
Then, we saw how to gain insight into our application's memory use using counters and CLR Profiler.
This was followed by ways to reduce memory use by managed objects, such as acquire late / release early, and using the
StringBuilder to concatenate strings.
We then saw how to reduce memory usage by unmanaged resources, by taking care to dispose them as soon as possible.
Finally, we discussed ways to reduce memory use by sessions.
Now that we've seen how to reduce usage of memory, let's move on to reducing CPU usage.