泛型,Gc的问题 据说.net中的泛型,比如List<T> 垃圾回收器不会自动回收,直到出现结束?有这回事? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#和.NET 2.0 实战:平台、语言与框架这本书上说不回收。怎么回事? 那程序中有一大堆List<>数据,占了一大堆内存怎么解决? 找到文章了,结合上下文。意思是c#的运行时泛型的一个解释,当使用到泛型类的某个具体类型实例后,JIT会根据类型,生成泛型类的一个副本,使用指定的类型替代之前预留的泛化类型参数<T>。第一次使用时被翻译成IL后,程序退出才会释放,这个没任何问题,因为这只是类的定义,方法代码的副本,是很少的。垃圾回收是针对开发人员创建的托管内存的管理,并不是对CLR的管理。而保留这个泛型类的副本,也是一种优化,否则你反复使用List<int>则反复生成代码,效率会很低的。文章http://hi.baidu.com/li6343990/blog/item/58a2556fe57094f643169483.html 写个循环,无限调用一个方法 方法内部实例化一个泛型集合 看看在一段时间后是否会出现windows内存不足的提示.如果是则垃圾回收器不回收 否则 肯定是回收了.注意观察你的任务管理器, 当到达一个内存使用高峰期的时候 垃圾回收器会直接回收所有未使用资源.你的内存使用率会突然掉下去一大截. 你看的文章是描述CLR的原理,你的问题却和这个文章无关。托管内存是自动释放的。你可以检查是否有需要调用Dispose的地方没调用。或是手工的执行GC.Collect()。 垃圾回收也不是万能的,回收也是有条件的。比如一个对象由两部分组成,栈上的引用,堆中的实例(也就是具体的存数据的)如果堆中的实例没有被栈上的引用使用,这个实例会被回收。反之只要有引用,就不会被回收。直到应用程序被结束。泛型集合中全是引用,只要集合在,引用也就在了,所以实例也就不会被回收。能确认一个对象不用了,最好就置nullo=null; 请教各位用过Quartz.net的大哥 ASP.NET中Grideview在编辑后点击更新GridView1_RowUpdating()事件 ASP.NET 注册 FTP 的问题 如何获取string中所需的文字 问一个用asp.net开发时的html 如何在C#中添加自己的类库 如何让contextMenuStrip有条件的显示 问几个socket编程的问题~~~~ 请问有人用WPF开发过天敏VC4000视频卡的程序吗?请指教 gof模式。谁有这方面的照料。。。(UP的有分) 问个关于用sendmessage click toolbar button的问题 C#任意格式文本导入数据库
怎么回事?
那程序中有一大堆List<>数据,占了一大堆内存
怎么解决?
http://hi.baidu.com/li6343990/blog/item/58a2556fe57094f643169483.html
看看在一段时间后是否会出现windows内存不足的提示.
如果是则垃圾回收器不回收 否则 肯定是回收了.注意观察你的任务管理器, 当到达一个内存使用高峰期的时候 垃圾回收器会直接回收所有未使用资源.
你的内存使用率会突然掉下去一大截.
你看的文章是描述CLR的原理,你的问题却和这个文章无关。
托管内存是自动释放的。你可以检查是否有需要调用Dispose的地方没调用。或是手工的执行GC.Collect()。
比如一个对象由两部分组成,栈上的引用,堆中的实例(也就是具体的存数据的)
如果堆中的实例没有被栈上的引用使用,这个实例会被回收。反之只要有引用,就不会被回收。直到应用程序被结束。泛型集合中全是引用,只要集合在,引用也就在了,所以实例也就不会被回收。能确认一个对象不用了,最好就置nullo=null;