GC.RemoveMemoryPressure(Int64) 方法

定义

通知运行时已释放非托管内存,在安排垃圾回收时不需要再考虑它。

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

已释放的非托管内存量。

属性

例外

bytesAllocated 小于或等于 0。

在 32 位计算机上, bytesAllocated 大于 Int32.MaxValue

注解

在确定何时计划垃圾回收时,运行时会考虑分配的托管内存量。 如果小型托管对象分配了大量非托管内存,则运行时仅考虑托管内存,因此低估了计划垃圾回收的紧迫性。 方法 AddMemoryPressure 通知运行时系统内存的此额外压力,方法 RemoveMemoryPressure 通知运行时已释放额外的压力。

AddMemoryPressureRemoveMemoryPressure 方法仅对依赖终结器释放非托管资源的类型提高性能。 无需在遵循释放模式的类型中使用这些方法,在该模式中,仅当类型的使用者忘记调用 Dispose时,终结器才用于清理非托管资源。 有关对象终结和释放模式的详细信息,请参阅 清理非托管资源

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

在更复杂的方案中,非托管内存分配在托管对象的生存期内发生了重大变化,你可以调用 AddMemoryPressureRemoveMemoryPressure 方法将这些增量更改传达给运行时。

注意

必须确保完全消除所添加的压力量。 如果不这样做,可能会对长时间运行的应用程序中的系统性能产生负面影响。

适用于