GC.AddMemoryPressure(Int64) 方法

定义

通知运行时在安排垃圾回收时应考虑分配大量的非托管内存。

public:
 static void AddMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void AddMemoryPressure (long bytesAllocated);
public static void AddMemoryPressure (long bytesAllocated);
[<System.Security.SecurityCritical>]
static member AddMemoryPressure : int64 -> unit
static member AddMemoryPressure : int64 -> unit
Public Shared Sub AddMemoryPressure (bytesAllocated As Long)

参数

bytesAllocated
Int64

已分配的非托管内存的增量。

属性

例外

bytesAllocated 小于或等于 0。

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

注解

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

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

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

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

注意

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

适用于