I know Sysinternals Process Explorer has been recommended in several blogs for quite some time. While most developers are familiar with this Task Manager replacement, few seem to leverage all it has to offer. Where I find it most useful is in the Process View (you have to double click the process to get there). Once there check out the .NET tab (.NET assemblies only) which provides some great information about what the process is doing. I personally like to monitor the .NET CLR Data information to help me better understand memory usage during runtime. If you have a memory leak in a .NET assembly this can be extremely helpful. I used it to monitor Garbage Collection and Generation Heap Size as I navigated one application and found clues which assisted me to eliminate a nasty leak. If you are not familiar with how the Garbage Collector operates this a good way to learn. I also recommend you check out this article by Jeffrey Richter. Now something you should know is that you can get the same information from perfmon, but why when it is so nicely presented by Process Explorer. If for some reason you cannot afford the cost of Process Explorer (free) then go with perfmon and see this article.