A:知道GC吗?
B:知道
A:那请你解释一下。
B:NET 平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工作,就是所谓的垃圾回收机制。.NET的垃圾回收机制,用root定时的遍历heap,查看对象是否在内存中引用,如果没用引用的释放资源。
A:好的,是不是所以的资源都可以通过GC回收了。
B:不是。
A:是什么资源不能通过GC回收呢?你能不能说一下怎样手动释放资源吗?
A:类支持IDisposable接口,在每次使用完对象后,立即通过手工Dispose()方法,或者利用Using块隐式的强制调用Dispose()方法,实现在对象的立即销毁。在Dispose()方法中,将调用Dispose()方法的带一个布尔参数的重载,在该重载函数中,手工编写代码释放对象所打开的所有托管和非托管资源。
综上,在此问中需要掌握两点,一是掌握GC的定义及原理,二是掌握不依赖GC怎样手动回收。当时被问手动回收的时候比较郁闷,因为我从来没有注意过,所以没有答上来。写在这里希望面试时遇到此问题可以很好的回答。
参考:如何手工释放资源?
C#中对象的销毁和内存回收
http://kb.cnblogs.com/page/42334/