Dispose的具体使用方法疑问来自
的有关信息介绍如下:问题补充说明:我知道Dispose是用来释放内存的,我试着写了一下代码,但结果却和我预期的不一样: DataTable dt = new DataTable(); dt.Columns.Add("A"); dt.Rows.Add(dt.NewRow()); // dt.Rows.Clear(); dt.Dispose(); GC.Collect(); 至此,dt应该被释放了,但当我... 我知道Dispose是用来释放内存的,我试着写了一下代码,但结果却和我预期的不一样:DataTable dt = new DataTable();dt.Columns.Add("A");dt.Rows.Add(dt.NewRow());//dt.Rows.Clear();dt.Dispose();GC.Collect();至此,dt应该被释放了,但当我再次调用dt.Rows.Add(dt.NewRow());程序仍然正常运行,甚至我将这段代码放到一个while(true)循环中,持续运行了10分钟程序都没有崩溃。请问这是为什么? 展开
dt.Dispose()只是告诉垃圾回收器可以回收了GC.Collect()只是告诉垃圾回收期尝试回收,但并不一定保证能回收参见MSDN解释:使用此方法尝试回收所有搞八投无法访问的内存。然而,Collect方法并不保证可以回收所有无法访问的内降六增呢存。无论对象在内存中的时间有多长,所有的对象均被考虑回收;不过,在托管代码中引用的对象不会被回收。使用此方法强制系统尝试回收最大可用内存量。http://msdn.m计李企icrosoft.com/zh-cn/library/xe0c2357(v=vs.80).aspx