对非托管对象使用Add / RemoveMemoryPressure的正确方法是什么?我有一个非托管对象 - 但它大量使用例如STL容器。我是否应该不断更新托管GC,每次更改非托管对象的总大小?或者只是它的原始分配大小?我什么时候打电话给RemoveMemoryPressure?终结?处置()?
答案 0 :(得分:2)
来自here(并由@Wim Coenen注意到):
在最简单的使用模式中,a 托管对象分配非托管 构造函数和发行版中的内存 它在Dispose或Finalize方法中。 调用AddMemoryPressure方法 分配非托管内存后, 并调用RemoveMemoryPressure 释放后的方法。
在更复杂的场景中,在哪里 非托管内存分配 在此期间发生了重大变 托管对象的生命周期,你 可以调用AddMemoryPressure和 RemoveMemoryPressure方法 传达这些增量变化 到运行时。
因此,您必须决定在跟踪这些变化方面投入多少精力以及您将获得多少好处。