Aracılığıyla paylaş


MemoryFailPoint(Int32) Oluşturucu

Tanım

Başarılı bir yürütme için gereken bellek miktarını belirterek sınıfının yeni bir örneğini MemoryFailPoint başlatır.

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)

Parametreler

sizeInMegabytes
Int32

Megabayt cinsinden gerekli bellek boyutu. Bu pozitif bir değer olmalıdır.

Öznitelikler

Özel durumlar

Belirtilen bellek boyutu negatif veya 0.

Geçit tarafından korunan kodun yürütülmesini başlatmak için yeterli bellek yok.

Örnekler

Aşağıdaki örnekte, yürütülürken bir yöntemin gerektirdiği bellek miktarının nasıl belirleneceği gösterilmektedir. Bu kod örneği, sınıfı için MemoryFailPoint sağlanan daha büyük bir örneğin parçasıdır.

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;
}

Açıklamalar

Uygulamanız tarafından bir iş öğesini işlemek için kullanılan bellek miktarı ampirik olarak belirlenebilir. Uygulamanızın bir isteği işlemesi için gereken bellek miktarını tahmin etmek için, iş öğesini işleyen yöntemi çağırmadan önce ve çağırdıktan sonra kullanılabilir bellek miktarını belirlemek için yöntemini kullanmayı GC.GetTotalMemory göz önünde bulundurun. Parametresinin MemoryFailPoint değerini dinamik olarak belirleyen bir kod örneği için sınıfına sizeInMegabytes bakın.

Şunlara uygulanır