MemoryFailPoint(Int32) Costruttore

Definizione

Inizializza una nuova istanza della classe MemoryFailPoint, specificando la quantità di memoria richiesta per il completamento dell'esecuzione.

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)

Parametri

sizeInMegabytes
Int32

Dimensione della memoria richiesta in megabyte. Il valore deve essere positivo.

Attributi

Eccezioni

La dimensione di memoria specificata è negativa.

La memoria disponibile è insufficiente per iniziare l'esecuzione del codice protetto dalla verifica.

Esempio

Nell'esempio seguente viene illustrato come determinare la quantità di memoria richiesta da un metodo durante l'esecuzione. Questo esempio di codice fa parte di un esempio più grande fornito per la 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;
}

Commenti

La quantità di memoria usata dall'applicazione per elaborare un elemento di lavoro può essere determinata in modo empirico. Per stimare la quantità di memoria necessaria per elaborare una richiesta, è consigliabile usare il GC.GetTotalMemory metodo per determinare la quantità di memoria disponibile prima e dopo aver chiamato il metodo che elabora l'elemento di lavoro. Vedere la MemoryFailPoint classe per un esempio di codice che determina in modo dinamico il valore per il sizeInMegabytes parametro.

Si applica a