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

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

Атрибуты

Исключения

Заданный объем памяти является отрицательным числом.

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

Примеры

В следующем примере показано, как определить объем памяти, необходимый методу при выполнении. Этот пример кода является частью более крупного примера, предоставленного 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 .

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