MemoryFailPoint(Int32) Konstruktor
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci MemoryFailPoint třídy a určuje množství paměti potřebné k úspěšnému spuštění.
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
Požadovaná velikost paměti v megabajtech. To musí být kladná hodnota.
- Atributy
Výjimky
Zadaná velikost paměti je záporná.
K zahájení spouštění kódu chráněného bránou není dostatek paměti.
Příklady
Následující příklad ukazuje, jak určit velikost paměti, kterou metoda vyžaduje při provádění. Tento příklad kódu je součástí většího příkladu zadaného MemoryFailPoint pro třídu.
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;
}
Poznámky
Množství paměti používané vaší aplikací ke zpracování pracovní položky lze určit empiricky. Pokud chcete odhadnout velikost paměti, kterou aplikace potřebuje zpracovat, zvažte použití GC.GetTotalMemory metody k určení množství paměti dostupné před voláním metody, která zpracovává pracovní položku. Podívejte se na MemoryFailPoint třídu pro příklad kódu, který dynamicky určuje hodnotu parametru sizeInMegabytes
.