垃圾收集概念

31 浏览
0 Comments

垃圾收集概念

Finalize() -
这个函数只会在垃圾回收过程中清理非托管资源 - 用户无法知道这个方法实际何时执行。也不能直接调用此函数来清理内存。\nDispose() -
通过实现IDisposable接口,用户可以清理非托管资源,用户可以确切知道资源何时被释放。\n我的理解是Finalize()不能被重写来清理非托管资源。这是一个系统进程,只有\'GC\'进程会用于清理非托管资源。\n如果用户需要自己清理资源,那么他/她应该实现IDisposable接口并明确调用Dispose()。没有其他可能性!在清理非托管资源方面,最佳实践是使用\'USING\'语句。\n问题1:\n我的理解正确吗?如果我有错误,请纠正我上述的陈述。\n问题2:\n另外,我想知道,我可以通过实现IDisposable接口并调用Dispose()来清理托管资源吗?

0
0 Comments

垃圾回收的概念出现的原因是为了解决内存管理的问题。在.NET应用程序中,内存是一种受控资源,分配和释放内存由运行时处理,因此不需要进行特殊的操作。垃圾回收器会在对象变得可回收时自动回收内存。

因此,回答第二个问题:不能使用IDisposable来清理内存,因为内存是通过垃圾回收自动回收的。可以使用IDisposable来处理垃圾回收器无法处理的资源,例如句柄。

0