Compartir vía


MemoryFailPoint(Int32) Constructor

Definición

Inicializa una nueva instancia de la clase MemoryFailPoint, especificando la cantidad de memoria necesaria para una ejecución sin problemas.

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)

Parámetros

sizeInMegabytes
Int32

Tamaño de memoria necesario, en megabytes. Este valor debe ser positivo.

Atributos

Excepciones

El tamaño de memoria especificado es negativo o 0.

No hay memoria suficiente para comenzar la ejecución del código protegido por la puerta.

Ejemplos

En el ejemplo siguiente se muestra cómo determinar la cantidad de memoria que requiere un método al ejecutarse. Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase 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;
}

Comentarios

La cantidad de memoria usada por la aplicación para procesar un elemento de trabajo se puede determinar empíricamente. Para calcular la cantidad de memoria que la aplicación necesita para procesar una solicitud, considere la posibilidad de usar el GC.GetTotalMemory método para determinar la cantidad de memoria disponible antes y después de llamar al método que procesa el elemento de trabajo. Consulte la MemoryFailPoint clase para obtener un ejemplo de código que determine dinámicamente el valor del sizeInMegabytes parámetro .

Se aplica a