MemoryFailPoint(Int32) 构造函数

定义

初始化 MemoryFailPoint 类的新实例,指定成功执行所需的内存量。Initializes a new instance of the MemoryFailPoint class, specifying the amount of memory required for successful execution.

public:
 MemoryFailPoint(int sizeInMegabytes);
public MemoryFailPoint (int sizeInMegabytes);
[System.Security.SecurityCritical]
public MemoryFailPoint (int sizeInMegabytes);
new System.Runtime.MemoryFailPoint : int -> System.Runtime.MemoryFailPoint
Public Sub New (sizeInMegabytes As Integer)

参数

sizeInMegabytes
Int32

需要的内存大小(以兆字节为单位)。The required memory size, in megabytes. 这必须是一正值。This must be a positive value.

属性

例外

指定的内存大小为负数。The specified memory size is negative.

没有足够的内存来开始执行由门保护的代码。There is insufficient memory to begin execution of the code protected by the gate.

示例

下面的示例演示如何在执行时确定方法所需的内存量。The following example demonstrates how to determine the amount of memory a method requires when executing. 此代码示例是为 MemoryFailPoint 类提供的更大示例的一部分。This code example is part of a larger example provided for the MemoryFailPoint class.

private static int EstimateMemoryUsageInMB()
{
    int memUsageInMB = 0;

    long memBefore = GC.GetTotalMemory(true);
    int numGen0Collections = GC.CollectionCount(0);
    // Execute a test version of the method to estimate memory requirements.
    // This test method only exists to determine the memory requirements.
    ThreadMethod();
    // Includes garbage generated by the worker function.
    long memAfter = GC.GetTotalMemory(false);
    // If a garbage collection occurs during the measuring, you might need a greater memory requirement.
    Console.WriteLine("Did a GC occur while measuring?  {0}", numGen0Collections == GC.CollectionCount(0));
    // Set the field used as the parameter for the MemoryFailPoint constructor.
    long memUsage = (memAfter - memBefore);
    if (memUsage < 0)
    {
        Console.WriteLine("GC's occurred while measuring memory usage.  Try measuring again.");
        memUsage = 1 << 20;
    }

    // Round up to the nearest MB.
    memUsageInMB = (int)(1 + (memUsage >> 20));
    Console.WriteLine("Memory usage estimate: {0} bytes, rounded to {1} MB", memUsage, memUsageInMB);
    return memUsageInMB;
}

注解

应用程序处理工作项所用的内存量可以确定凭经验。The amount of memory used by your application to process a work item can be determined empirically. 若要估计应用程序处理请求所需的内存量,请考虑使用 GC.GetTotalMemory 方法来确定调用处理工作项的方法之前和之后可用的内存量。To estimate the amount of memory your application needs to process a request, consider using the GC.GetTotalMemory method to determine the amount of memory available before and after calling the method that processes the work item. 请参阅 MemoryFailPoint 类,了解用于动态确定 sizeInMegabytes 参数的值的代码示例。See the MemoryFailPoint class for a code example that dynamically determines the value for the sizeInMegabytes parameter.

适用于