MemoryFailPoint(Int32) Конструктор
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса MemoryFailPoint, указывающий объем памяти, необходимый для успешного выполнения.
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)
Параметры
- sizeInMegabytes
- Int32
Необходимый объем памяти в мегабайтах. Это значение должно быть положительным.
- Атрибуты
Исключения
Указанный размер памяти является отрицательным или равным 0.
Для выполнения кода, защищенного логическим элементом, недостаточно памяти.
Примеры
В следующем примере показано, как определить объем памяти, необходимый методу при выполнении. Этот пример входит в состав более крупного примера использования класса MemoryFailPoint.
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;
}
Комментарии
Объем памяти, используемый приложением для обработки рабочего элемента, можно определить эмпирически. Чтобы оценить объем памяти, необходимый приложению для обработки запроса, рассмотрите GC.GetTotalMemory возможность использования метода для определения объема памяти, доступного до и после вызова метода, обрабатывающего рабочий элемент.
MemoryFailPoint Пример кода, динамически определяющий значение параметра, см. в sizeInMegabytes
классе .