You need memory profiler to debug such problems. For example:
Also see suggestions from the other question about memory leaks.
Basically, this boils down to finding the objects in memory that stay here while they shouldn't. It can be event handler holding reference to its class or some collection of objects holding references to their parents, and so on. After finding the root cause you may need to restructure your application to get rid of the unnecessary references. This can be as simple as adding forgotten event unsubscription but in non trivial cases might require applying some structural design patterns. This part is very application specific.
Process class is the right thing you are searching.
Process myProcess = Process.GetCurrentProcess() to get current process.
Then you can use
myProcess´s properties like
PrivateMemorySize64 and so on.