MemoryFailPoint(Int32) Konstruktor
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Inicjuje MemoryFailPoint nowe wystąpienie klasy, określając ilość pamięci wymaganej do pomyślnego wykonania.
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
Wymagany rozmiar pamięci w megabajtach. Musi to być wartość dodatnia.
- Atrybuty
Wyjątki
Określony rozmiar pamięci jest ujemny lub 0.
Za mało pamięci do rozpoczęcia wykonywania kodu chronionego przez bramę.
Przykłady
W poniższym przykładzie pokazano, jak określić ilość pamięci wymaganą przez metodę podczas wykonywania. Ten przykład kodu jest częścią większego przykładu podanego MemoryFailPoint dla klasy.
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;
}
Uwagi
Ilość pamięci używanej przez aplikację do przetwarzania elementu roboczego można określić empirycznie. Aby oszacować ilość pamięci, którą aplikacja musi przetworzyć żądanie, rozważ użycie GC.GetTotalMemory metody w celu określenia ilości dostępnej pamięci przed wywołaniem metody przetwarzającej element roboczy. Zobacz klasę, aby zapoznać się z MemoryFailPoint przykładem kodu, który dynamicznie określa wartość parametru sizeInMegabytes
.