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:
No, it's not explicitly associated with any specific object. The assumption is that at disposal/finalize time, the same object will remove that pressure. From the docs:
In the simplest usage pattern, a managed object allocates unmanaged memory in the constructor and releases it in the Dispose or Finalize method. Call the AddMemoryPressure method after allocating the unmanaged memory, and call the RemoveMemoryPressure method after releasing it.
In more complicated scenarios, the memory pressure may change over time - but it's still expected to be with the co-operation of the object in question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With