GC.MaxGeneration属性【GC示例】

获取系统当前支持的最大代数。
命名空间: System
程序集: mscorlib(位于 mscorlib.dll)

语法

public static int MaxGeneration { get; }

属性值

Type: System.Int32

从零到所支持的最大代数间的一个值。

备注

生成编号或年龄,对象是对象的生命周期的实现定义的相对度量。 最新创建的对象是第 0 代中,最旧的对象是小于或等于生成返回级别MaxGeneration属性。

垃圾回收器假定较新的内存是更有可能适合于较旧的内存比垃圾回收。 因此,垃圾回收器可以提高其性能通过调整它回收内存,每次的世代号和MaxGeneration属性值可以随时间增长。

如果实现对象老化,MaxGeneration属性返回系统使用的最大代数; 否则,此属性返回零。

实现函数说明:

对于此实现,返回的值MaxGeneration属性一定正在执行的应用程序的生存期内保持不变。

使用MaxGeneration属性来确定在调用时可以指定的最大值Collect采用生成参数的方法。

示例

下面的示例演示如何 MaxGeneration 属性用于在使用中当前显示的最大代数。

using System;

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

        static void Main()
        {
            MyGCCollectClass myGCCol = new MyGCCollectClass();
 
	   //确定系统垃圾收集器当前支持的最大代数。
            Console.WriteLine("The highest generation is {0}", GC.MaxGeneration);

            myGCCol.MakeSomeGarbage();

            //确定myGCCol对象存储哪一代。
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));

            //确定托管内存中当前分配的字节数的最佳可用近似值。
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));

            //仅执行第0代的收集
            GC.Collect(0);

            //确定myGCCol对象存储哪一代。
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
 
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
 
            //进行所有世代的收集,包括2
            GC.Collect(2);

            //确定myGCCol对象存储哪一代。
            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++)
            {
                //创建对象并释放它们以使用未使用的对象填充内存。
                vt = new Version();
            }
        }
    }
}

运行结果如图:

在这里插入图片描述

阅读更多
换一批

没有更多推荐了,返回首页