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čí velikost paměti potřebné pro úspěšné 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. Musí to být kladná hodnota.
- Atributy
Výjimky
Zadaná velikost paměti je záporná nebo 0.
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 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
Velikost paměti, kterou vaše aplikace používá ke zpracování pracovní položky, lze určit empiricky. Pokud chcete odhadnout velikost paměti, kterou aplikace potřebuje ke zpracování požadavku, zvažte použití GC.GetTotalMemory metody k určení množství paměti dostupné před voláním a po volání 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
.