目录:
定义-Finalize是什么意思?
Finalize是一种对象方法,其中包含释放非托管资源并在垃圾回收(GC)之前执行清理操作所需的代码。
finalize方法用于清除非.NET管理的资源。 尽管.NET框架旨在通过隐式执行内存管理任务来释放托管资源,但必须显式释放非托管应用程序资源(例如文件句柄和数据库连接)。
技术百科解释了完成
虽然finalize被设计为由GC隐式调用,但是dispose方法可以由用户代码显式调用以释放资源。
Finalize与传统的C ++析构函数相似,因为每个析构函数都负责释放对象资源。 当对象超出范围时,将立即执行C ++析构函数,而在GC的对象清理期间将调用finalize。 在C#中,无法直接调用或覆盖finalize。 如果声明了析构函数,则在编译程序时会将其转换为finalize方法。
在完成过程中,必须避免内存分配或调用虚拟方法。 finalize的范围应该受到保护,以便只能在相同的类或其派生类中访问它。 Finalize不应引用任何其他对象。 在C#中,直接在除其基类之外的对象上调用finalize是无效的操作。 没有任何能够阻塞调用线程的调用,完成代码应该最少。 由于finalize由专用线程调用,因此其代码不应使用线程本地存储或任何需要线程关联的技术。
由于缺少确定性和对GC性能的影响,使用finalize作为释放未管理的内存或资源的后备机制非常重要。
