Compartilhar via


MemoryFailPoint(Int32) Construtor

Definição

Inicializa uma nova instância da classe MemoryFailPoint, especificando a quantidade de memória necessária para uma execução bem-sucedida.

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

O tamanho da memória necessária, em megabytes. Isso deve ser um valor positivo.

Atributos

Exceções

O tamanho de memória especificado é negativo ou 0.

Não há memória suficiente para iniciar a execução do código protegido pelo portão.

Exemplos

O exemplo a seguir demonstra como determinar a quantidade de memória que um método requer ao executar. Este exemplo de código faz parte de um exemplo maior fornecido para a MemoryFailPoint classe .

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

Comentários

A quantidade de memória usada pelo aplicativo para processar um item de trabalho pode ser determinada empiricamente. Para estimar a quantidade de memória que seu aplicativo precisa para processar uma solicitação, considere usar o GC.GetTotalMemory método para determinar a quantidade de memória disponível antes e depois de chamar o método que processa o item de trabalho. Consulte a MemoryFailPoint classe para obter um exemplo de código que determina dinamicamente o valor do sizeInMegabytes parâmetro .

Aplica-se a