文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>《Advanced .NET Debugging》 读书笔记 Listing 5-2: GC代龄的示例

《Advanced .NET Debugging》 读书笔记 Listing 5-2: GC代龄的示例

时间:2010-12-31  来源:李志鹏

using System;
using System.Text;
using System.Runtime.Remoting;

namespace Advanced.NET.Debugging.Chapter5
{
    class Name
    {
        private string first;
        private string last;

        public string First { get { return first; } }
        public string Last { get { return last; } }

        public Name(string f, string l)
        {
            first = f; last = l;
        }
    }

    class Gen
    {
        static void Main(string[] args)
        {
            Name n1 = new Name("Mario", "Hewardt");
            Name n2 = new Name("Gemma", "Hewardt");

            Console.WriteLine("Allocated objects");

            Console.WriteLine("Press any key to invoke GC");
            Console.ReadKey();

            n1 = null;
            GC.Collect();

            Console.WriteLine("Press any key to invoke GC");
            Console.ReadKey();

            GC.Collect();
           
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
}

1. 在WinDbg里载入05Gen.exe

2. 执行到需要按键继续处, 先执行 .loadby sos.dll mscorwks

3. 再执行 .load sosex.dll

4. 执行 !eeheap –gc 可看到各代龄对象的统计状况。执行!clrstack –a 可以看到对象指向的heap地址:

此时可以发现,local指向的heap对象地址0x00000000024b3900 比generation 0的地址 0x0000000002401030还要大,可见其处于带龄0.

5. 当执行一次GC之后,再次重复以上过程,可得:

可见该对象已经指向的heap地址0x000000002424358已经位于代龄0的地址0x0000000002425630和代龄2的地址0x0000000002401018之间,可见该对象在经过一次gc之后,已经成了代龄为1的对象。

相关阅读 更多 +
排行榜 更多 +
XLM币最具爆发力的安全交易所币安binance下载

XLM币最具爆发力的安全交易所币安binance下载

金融理财 下载
XEM币最安全隐私链的全球交易所币安binance下载

XEM币最安全隐私链的全球交易所币安binance下载

金融理财 下载
WAVES币最新上线的优质交易所币安binance下载

WAVES币最新上线的优质交易所币安binance下载

金融理财 下载