MemoryFailPoint(Int32) Konstruktor

Definition

Initialisiert eine neue Instanz der MemoryFailPoint Klasse, die den für die erfolgreiche Ausführung erforderlichen Arbeitsspeicher angibt.

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)

Parameter

sizeInMegabytes
Int32

Die erforderliche Arbeitsspeichergröße in Megabyte. Dies muss ein positiver Wert sein.

Attribute

Ausnahmen

Die angegebene Arbeitsspeichergröße ist negativ oder 0.

Es ist nicht genügend Arbeitsspeicher vorhanden, um mit der Ausführung des codes zu beginnen, der durch das Gate geschützt ist.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie die Menge des Arbeitsspeichers bestimmen, den eine Methode bei der Ausführung benötigt. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die MemoryFailPoint Klasse bereitgestellt wird.

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

Hinweise

Die Menge an Arbeitsspeicher, der von Ihrer Anwendung zum Verarbeiten einer Arbeitsaufgabe verwendet wird, kann empirisch bestimmt werden. Um die Menge des Arbeitsspeichers zu schätzen, den Ihre Anwendung zum Verarbeiten einer Anforderung benötigt, sollten Sie die GC.GetTotalMemory Methode verwenden, um den verfügbaren Arbeitsspeicher vor und nach dem Aufrufen der Methode zu ermitteln, die die Arbeitsaufgabe verarbeitet. Sehen Sie sich die MemoryFailPoint Klasse für ein Codebeispiel an, das den Wert für den sizeInMegabytes Parameter dynamisch bestimmt.

Gilt für: