请问垃圾回收中的 Generation 代 是什么意思? msdn中的解释GC.Collect (Int32) 强制对零代到指定代进行垃圾回收。 GC.MaxGeneration 系统支持的最大代数这个都是指什么意思? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在测试GetGeneration()方法的时候发现一个问题,背景如下:两个类FirstClass和SomeClassFirstClass{ private int MaxLine = 1000; ~FirstClass() { } // 这个函数将不能通过编译 // protected override void Finalize() // { // MaxLine = 0; // } public void GenerateSomeRubbish() { string strMM; for(int i=0;i<MaxLine;i++) { strMM = new string('a',MaxLine); } }}public class SomeClass{ public SomeClass() { } public void sameToUp() { string str; for(int i=0;i<10;i++) { str = new string('a',10); } }}在一个Main中测试GC.GetGeneration()方法。FirstClass fObj = new FirstClass();SomeClass sObj = new SomeClass();1、fObj.GenerateSomeRubbish();2、sObj.sameToUp();GC.GetGeneration(fObj);//返回2GC.GetGeneration(sObj);//返回2 如果屏蔽1、两个都返回0,如果屏蔽2、两个都返回2如果都屏蔽,都返回0。 在上边的Code中,FirstClass和SomeClass并没有很大的区别。表面上来看,其实都是产生一堆新的字符串对象而已,在寻找原因…….1、难道是因为有个析构函数,后来发现删除后也没有关系。2、难道是因为定义了一个局部的变量MaxLine,改动后也不是。3、莫非是MaxLine的大小有影响?我就把MaxLine改成了100,重新执行GC.GetGeneration(fObj),发现返回的是1,看来确实就是了。这就有趣了,那就测试一下所有的大小了J System.IO.StreamWriter sw = new System.IO.StreamWriter(@"d:\kkk.txt");for(int i=0; i< 10000; i++){ fObj.GenerateSomeRubbish(i);//这里改动了GenerateSomeRubbish,只是增加一个参数 sw.Write(i.ToString()+"\t"); sw.WriteLine(GC.GetGeneration(fObj));} 哈哈,结果如下数字 代数 0 0 1 0 2 0 ..... 48 0 49 0 50 1 51 1 .... 485 1 486 1 487 2 488 2 不知道为什么?为什么会产生代数不相同的情况?难道是微软的.net Framework规定了第1代的垃圾数量是50个,然后第2代的垃圾是427个,第三代的垃圾就不限制了? http://koffer.cnblogs.com/aspring?page=16 初学,请问怎样把int格式的数据写到textBox里? 关于Datagridview四问!一问10分 ASP.NET防盗链IHttpHandler源码(如何做的?) 谁来解决这个问题,多线程间数据共享问题,100高分相送 100分如何限制text框输入 Win8.1 下 VS2012的代码编辑器输入的中文全部是问号,有人遇到了吗? 问一个关于Linq的小问题.(select not like) 在分布式开发中用SUN的EJB是不是比微软的Web servic或Remoting快呀?? C#源代码跟踪 DataGrid,DataView的两个问题. ListBox问题 怎么让控件跟随鼠标移动?
代数
0
0
1
0
2
0
.....
48
0
49
0
50
1
51
1
....
485
1
486
1
487
2
488
2
不知道为什么?为什么会产生代数不相同的情况?难道是微软的.net Framework规定了第1代的垃圾数量是50个,然后第2代的垃圾是427个,第三代的垃圾就不限制了?