MemoryFailPoint(Int32) Konstruktor
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.