MemoryFailPoint(Int32) Konstruktor

Definice

Inicializuje novou instanci MemoryFailPoint třídy a určuje množství paměti potřebné k úspěšnému spuštění.

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)

Parametry

sizeInMegabytes
Int32

Požadovaná velikost paměti v megabajtech. To musí být kladná hodnota.

Atributy

Výjimky

Zadaná velikost paměti je záporná.

K zahájení spouštění kódu chráněného bránou není dostatek paměti.

Příklady

Následující příklad ukazuje, jak určit velikost paměti, kterou metoda vyžaduje při provádění. Tento příklad kódu je součástí většího příkladu zadaného MemoryFailPoint pro třídu.

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

Poznámky

Množství paměti používané vaší aplikací ke zpracování pracovní položky lze určit empiricky. Pokud chcete odhadnout velikost paměti, kterou aplikace potřebuje zpracovat, zvažte použití GC.GetTotalMemory metody k určení množství paměti dostupné před voláním metody, která zpracovává pracovní položku. Podívejte se na MemoryFailPoint třídu pro příklad kódu, který dynamicky určuje hodnotu parametru sizeInMegabytes .

Platí pro