8
I recently had need to use GC.AddMemoryPressure and it struck me as strange that it doesn't accept the object to add memory pressure to as an argument. I assume because it's so closely tied to the runtime, there is some mechanism by which the this pointer gets passed to the method. My question is threefold:
- How does the this pointer get passed to the method?
- I notice no exception is thrown when calling it from a static method. What happens in this case?
- Why do other GC methods such as GC.SupressFinalize and GC.ReRegisterForFinalize take an object argument where this method doesn't need one?