Sdílet prostřednictvím


MemoryFailPoint(Int32) Konstruktor

Definice

Inicializuje novou instanci MemoryFailPoint třídy a určí velikost paměti potřebné pro úspěšné 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. Musí to být kladná hodnota.

Atributy

Výjimky

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

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

Velikost paměti, kterou vaše aplikace používá ke zpracování pracovní položky, lze určit empiricky. Pokud chcete odhadnout velikost paměti, kterou aplikace potřebuje ke zpracování požadavku, zvažte použití GC.GetTotalMemory metody k určení množství paměti dostupné před voláním a po volání 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