MemoryFailPoint(Int32) コンストラクター

定義

正常に実行するために必要なメモリの量を指定して、MemoryFailPoint クラスの新しいインスタンスを初期化します。Initializes a new instance of the MemoryFailPoint class, specifying the amount of memory required for successful execution.

public:
 MemoryFailPoint(int sizeInMegabytes);
public MemoryFailPoint (int sizeInMegabytes);
[System.Security.SecurityCritical]
public MemoryFailPoint (int sizeInMegabytes);
new System.Runtime.MemoryFailPoint : int -> System.Runtime.MemoryFailPoint
Public Sub New (sizeInMegabytes As Integer)

パラメーター

sizeInMegabytes
Int32

必要なメモリ サイズ (単位は MB)。The required memory size, in megabytes. 必ず正の値を指定します。This must be a positive value.

属性

例外

指定したメモリ サイズが負の値です。The specified memory size is negative.

ゲートによって保護されているコードの実行を開始するためのメモリが不足しています。There is insufficient memory to begin execution of the code protected by the gate.

次の例は、実行時にメソッドが必要とするメモリの量を確認する方法を示しています。The following example demonstrates how to determine the amount of memory a method requires when executing. このコード例は、MemoryFailPoint クラス用に用意されている大規模な例の一部です。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;
}

注釈

作業項目を処理するためにアプリケーションによって使用されるメモリの量は、経験的によって決まります。The amount of memory used by your application to process a work item can be determined empirically. アプリケーションが要求を処理するために必要なメモリの量を見積もるには、GC.GetTotalMemory メソッドを使用して、作業項目を処理するメソッドを呼び出す前後に使用できるメモリの量を確認することを検討してください。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. sizeInMegabytes パラメーターの値を動的に決定するコード例については、MemoryFailPoint クラスを参照してください。See the MemoryFailPoint class for a code example that dynamically determines the value for the sizeInMegabytes parameter.

適用対象