我最近需要使用GC.AddMemoryPressure并且让我感到奇怪的是它不接受添加内存压力的对象作为参数。我假设因为它与运行时紧密相关,所以有一些机制可以将this
指针传递给方法。我的问题有三个:
答案 0 :(得分:2)
不,它没有与任何特定对象明确关联。假设在处置/完成时间,同一个对象将消除该压力。来自the docs:
在最简单的使用模式中,托管对象在构造函数中分配非托管内存,并在Dispose或Finalize方法中释放它。在分配非托管内存后调用AddMemoryPressure方法,并在释放后调用RemoveMemoryPressure方法。
在更复杂的场景中,内存压力可能会随着时间的推移而发生变化 - 但仍然可以预期相关对象的合作。
答案 1 :(得分:0)
AddMemoryPressure比通常情况下更快地将垃圾收集器带入生活。就这样。当收集实例并且需要运行终结器时,禁止和RegisterForFinialise调用或不是该类型的特定代码......
建议你阅读垃圾收集器配合,你可能会发现你不需要调用IncreaseMemoryPressure,或者几乎就像调用它会导致性能下降一样。