GC.RemoveMemoryPressure(Int64) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
通知运行时已释放非托管内存,在安排垃圾回收时不需要再考虑它。
public:
static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure (long bytesAllocated);
public static void RemoveMemoryPressure (long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)
参数
- bytesAllocated
- Int64
已释放的非托管内存量。
- 属性
例外
注解
在确定何时计划垃圾回收时,运行时会考虑分配的托管内存量。 如果小型托管对象分配了大量非托管内存,则运行时仅考虑托管内存,因此低估了计划垃圾回收的紧迫性。 方法 AddMemoryPressure 通知运行时系统内存的此额外压力,方法 RemoveMemoryPressure 通知运行时已释放额外的压力。
AddMemoryPressure和 RemoveMemoryPressure 方法仅对依赖终结器释放非托管资源的类型提高性能。 无需在遵循释放模式的类型中使用这些方法,在该模式中,仅当类型的使用者忘记调用 Dispose
时,终结器才用于清理非托管资源。 有关对象终结和释放模式的详细信息,请参阅 清理非托管资源。
在最简单的使用模式中,托管对象在构造函数中分配非托管内存,并在 方法中 Finalize
释放它。
AddMemoryPressure在分配非托管内存后调用 方法,并在释放后调用 RemoveMemoryPressure 方法。
在更复杂的方案中,非托管内存分配在托管对象的生存期内发生了重大变化,你可以调用 AddMemoryPressure 和 RemoveMemoryPressure 方法将这些增量更改传达给运行时。
注意
必须确保完全消除所添加的压力量。 如果不这样做,可能会对长时间运行的应用程序中的系统性能产生负面影响。