代码之家  ›  专栏  ›  技术社区  ›  Puppy

非托管对象的GC.AddMemoryPressure

  •  6
  • Puppy  · 技术社区  · 14 年前

    对非托管对象使用Add/removemorypressure的正确方法是什么?我有一个非托管对象-但它大量使用,例如STL容器。每次更改非托管对象的总大小时,我是否应该不断更新托管GC?或者只是原始分配大小?我什么时候叫远程记忆压力?定稿人?Dispose()?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Mitch Wheat    14 年前

    here (并由@Wim Coenen注明):

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

    在更复杂的情况下 非托管内存分配 在 托管对象的生存期, 你 可以调用AddMemoryPressure和 移除MemoryPressure方法到 传达这些增量更改 到运行时 .

    所以你必须决定花多少精力去跟踪这些变化,以及你将得到多少好处。