MemoryFailPoint(Int32) Конструктор

Определение

Инициализирует новый экземпляр класса, указывая объем памяти, необходимый для успешного MemoryFailPoint выполнения.

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

Параметры

sizeInMegabytes
Int32

Требуемый размер памяти в мегабайтах. Это должно быть положительное значение.

Атрибуты

Исключения

Указанный размер памяти отрицательный или 0.

Недостаточно памяти для начала выполнения кода, защищенного шлюзом.

Примеры

В следующем примере показано, как определить объем памяти, необходимый методу при выполнении. Этот пример кода является частью более крупного примера, предоставленного для MemoryFailPoint класса.

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;
}

Комментарии

Объем памяти, используемой приложением для обработки рабочего элемента, можно определить эмпирически. Чтобы оценить объем памяти, необходимой приложению для обработки запроса, рассмотрите возможность использования GC.GetTotalMemory метода, чтобы определить объем памяти, доступный до и после вызова метода, обрабатывающего рабочий элемент. См. MemoryFailPoint класс для примера кода, который динамически определяет значение параметра sizeInMegabytes .

Применяется к