英語で読む

次の方法で共有


GC.GetTotalMemory(Boolean) メソッド

定義

断片化を除くヒープ サイズを取得します。 たとえば、GC ヒープ の合計サイズが 100 mb で、断片化 (空きオブジェクトによって占有される領域) が 40 mb を占める場合、この API は 60 mb を報告します。 パラメーターは、このメソッドが制御を戻す前に短い時間だけ待機して、システムがガベージ コレクションを行い、オブジェクトの終了操作を実行できるようにするかどうかを示します。

public static long GetTotalMemory (bool forceFullCollection);

パラメーター

forceFullCollection
Boolean

ガベージ コレクションの発生を待ってから制御を戻す場合は true。それ以外の場合は false

戻り値

断片化を除くヒープ サイズ (バイト単位)。

次の例では、 メソッドを GetTotalMemory 使用して、マネージド メモリに現在割り当てられているバイト数を取得および表示する方法を示します。

using System;

namespace GCCollectIntExample
{
    class MyGCCollectClass
    {
        private const long maxGarbage = 1000;

        static void Main()
        {
            MyGCCollectClass myGCCol = new MyGCCollectClass();

            // Determine the maximum number of generations the system
        // garbage collector currently supports.
            Console.WriteLine("The highest generation is {0}", GC.MaxGeneration);

            myGCCol.MakeSomeGarbage();

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));

            // Determine the best available approximation of the number
        // of bytes currently allocated in managed memory.
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));

            // Perform a collection of generation 0 only.
            GC.Collect(0);

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));

            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));

            // Perform a collection of all generations up to and including 2.
            GC.Collect(2);

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
            Console.Read();
        }

        void MakeSomeGarbage()
        {
            Version vt;

            for(int i = 0; i < maxGarbage; i++)
            {
                // Create objects and release them to fill up memory
        // with unused objects.
                vt = new Version();
            }
        }
    }
}

注釈

パラメーターが の場合、 forceFullCollection このメソッドは true、システムがガベージ を収集してオブジェクトを最終処理する間、短い間隔で待機してから を返します。 間隔の期間は、完了したガベージ コレクション サイクルの数と、サイクル間で回復されるメモリの量の変化によって決まる、内部的に指定された制限です。 ガベージ コレクターでは、アクセスできないすべてのメモリが収集されるとは限りません。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0