MemoryFailPoint(Int32) Konstruktor
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Initialisiert eine neue Instanz der MemoryFailPoint-Klasse und gibt die zur erfolgreichen Ausführung erforderliche Arbeitsspeichergröße an.
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. Dieser Wert muss positiv sein.
- Attribute
Ausnahmen
Die angegebene Arbeitsspeichergröße ist negativ oder 0.
Es ist nicht ausreichend Arbeitsspeicher vorhanden, um die Ausführung des durch das Gate geschützten Codes zu starten.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Sie den Arbeitsspeicher bestimmen, den eine Methode beim Ausführen 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 des Arbeitsspeichers, der von Ihrer Anwendung zur Verarbeitung eines Arbeitselements verwendet wird, kann empirisch bestimmt werden. Um die Menge an Arbeitsspeicher zu schätzen, die Ihre Anwendung für die Verarbeitung einer Anforderung benötigt, sollten Sie die GC.GetTotalMemory -Methode verwenden, um die Menge des verfügbaren Arbeitsspeichers vor und nach dem Aufruf der Methode zu bestimmen, die das Arbeitselement verarbeitet. Sehen Sie sich die MemoryFailPoint -Klasse für ein Codebeispiel an, das den Wert für den sizeInMegabytes
Parameter dynamisch bestimmt.