MemoryFailPoint Constructor (Int32)
Initializes a new instance of the MemoryFailPoint class, specifying the amount of memory required for successful execution.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- sizeInMegabytes
-
Type:
System::Int32
The required memory size, in megabytes. This must be a positive value.
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | The specified memory size is negative. |
| InsufficientMemoryException | There is insufficient memory to begin execution of the code protected by the gate. |
The amount of memory used by your application to process a work item can be determined empirically. To estimate the amount of memory your application needs to process a request, consider using the GC::GetTotalMemory method to determine the amount of memory available before and after calling the method that processes the work item. See the MemoryFailPoint class for a code example that dynamically determines the value for the sizeInMegabytes parameter.
The following example demonstrates how to determine the amount of memory a method requires when executing. This code example is part of a larger example provided for the MemoryFailPoint class.
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; }
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Available since 2.0