请问垃圾回收中的 Generation 代 是什么意思?

bborn 2006-05-17 08:27:21
msdn中的解释
GC.Collect (Int32) 强制对零代到指定代进行垃圾回收。

GC.MaxGeneration 系统支持的最大代数

这个都是指什么意思?
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuqm 2006-05-17
  • 打赏
  • 举报
回复
http://koffer.cnblogs.com/aspring?page=16
liuqm 2006-05-17
  • 打赏
  • 举报
回复
在测试GetGeneration()方法的时候发现一个问题,

背景如下:

两个类FirstClass和SomeClass

FirstClass

{

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);//返回2

GC.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个,第三代的垃圾就不限制了?

【该课程的完整课件,请同学们在最后一个课时附件下载或者在视频的右边点击课件下载,所有素材都是免费提供完整版,请放心】适用人群5G感兴趣者,5G科普小白人群,5G的投资者,5G的技术人群,通信行业从业者,不想被时抛弃的人群课程概述第五移动通信技术(英语:5th generation mobile networks或5th generation wireless systems、5th-Generation,简称5G或5G技术)是最新一蜂窝移动通信技术,也是即4G(LTE-A、WiMax)、3G(UMTS、LTE)和2G(GSM)系统之后的延伸。5G的性能目标是高数据速率、减少延迟、节省能源、降低成本、提高系统容量和大规模设备连接。Release-15的5G规范的第一阶段是为了适应早期的商业部署。Release-16的第二阶段将于2020年4月完成,作为IMT-2020技术的候选提交给国际电信联盟(ITU)。您知道什么是5G吗?美国为什么封杀华为?经济主动权?思考:5G什么产业会更热?微信,支付宝这类4G时表在3G时是没有估量的国的5G水平?5G人们所担心的辐射?未来生活?工业互联网、移动硬件,以及移动装置等产业有关IoT和IoE5G投资?5G技术?什么是人工智能?量子时?云计算?边缘计算?5G不仅仅是一个单一的5G,实际是我国社会主义新时的,往高质量发展的的一种产物;不仅仅是移动通信,承载着国高技术产业的希望,承载着:我们国家走出停留的低技术阶段,走在新技术前面的硬核实力,折射出一个民族的生存能力和发展能力的

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧