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

运行结果如图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值