MemoryFailPoint(Int32) Construtor
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicializa uma nova instância da MemoryFailPoint classe, 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 de memória necessário, em megabytes. Isto deve ser um valor positivo.
- Atributos
Exceções
O tamanho da memória especificado é negativo ou 0.
Há memória insuficiente para iniciar a execução do código protegido pela porta.
Exemplos
O exemplo seguinte demonstra como determinar a quantidade de memória que um método requer na execução. 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;
}
Observações
A quantidade de memória usada pela sua candidatura para processar um item de trabalho pode ser determinada empiricamente. Para estimar a quantidade de memória que a sua aplicação precisa para processar um pedido, 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 um exemplo de código que determina dinamicamente o valor do sizeInMegabytes parâmetro.