GC.Add MemoryPressure() 如何知道要向哪个对象添加内存压力?

2024-05-09

我最近需要使用GC.添加内存压力 http://msdn.microsoft.com/en-us/library/system.gc.addmemorypressure.aspx令我感到奇怪的是,它不接受添加内存压力的对象作为参数。我认为因为它与运行时紧密相关,所以存在某种机制this指针被传递给方法。我的问题有三个:

  1. this 指针如何传递给方法?
  2. 我注意到从静态方法调用它时没有抛出异常。在这种情况下会发生什么?
  3. 为什么其他 GC 方法(例如 GC.SupressFinalize 和 GC.ReRegisterForFinalize)采用对象参数,而该方法不需要该参数?

不,它没有与任何特定对象明确关联。假设在处理/完成时,同一个对象将消除该压力。从the docs http://msdn.microsoft.com/en-us/library/system.gc.addmemorypressure.aspx:

在最简单的使用模式中,托管对象在构造函数中分配非托管内存,并在 Dispose 或 Finalize 方法中释放它。分配非托管内存后调用AddMemoryPressure方法,释放非托管内存后调用RemoveMemoryPressure方法。

在更复杂的场景中,内存压力可能会随着时间的推移而变化 - 但仍然预计会与相关对象的合作有关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GC.Add MemoryPressure() 如何知道要向哪个对象添加内存压力? 的相关文章

随机推荐