MemoryFailPoint(Int32) Konstruktor

Definition

Initierar en ny instans av MemoryFailPoint klassen och anger hur mycket minne som krävs för en lyckad körning.

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)

Parametrar

sizeInMegabytes
Int32

Den minnesstorlek som krävs i megabyte. Detta måste vara ett positivt värde.

Attribut

Undantag

Den angivna minnesstorleken är negativ eller 0.

Det finns inte tillräckligt med minne för att påbörja körningen av koden som skyddas av grinden.

Exempel

I följande exempel visas hur du fastställer hur mycket minne en metod kräver vid körning. Det här kodexemplet är en del av ett större exempel för MemoryFailPoint klassen.

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

Kommentarer

Mängden minne som används av ditt program för att bearbeta ett arbetsobjekt kan fastställas empiriskt. Om du vill beräkna mängden minne som programmet behöver för att bearbeta en begäran bör du överväga att använda GC.GetTotalMemory metoden för att fastställa mängden minne som är tillgängligt före och efter att du anropat metoden som bearbetar arbetsobjektet. MemoryFailPoint Se klassen för ett kodexempel som dynamiskt avgör värdet för parameternsizeInMegabytes.

Gäller för