关键区别–dispose()与finalize()
dispose()和finalize()之间的关键区别在于,在销毁对象之前,depose()必须由程序员显式地调用,而finalize()则由垃圾回收器调用。
dispose()是一个关闭或释放非托管资源的方法,例如对象所持有的文件、流。finalize是在销毁当前对象所持有的非托管资源之前对其执行清理操作的方法。
目录
1. 概述和主要区别
2. 什么是dispose()
3. 什么是finalize()
4. dispose()和finalize()之间的相似性
5. 并列比较-以表格形式显示dispose()与finalize()
6. 摘要
什么是处置()(dispose())?
NET framework最重要的优点之一是它提供自动垃圾回收。它会自动释放未使用对象的内存。在C语言和C++语言中,程序员必须自己处理内存管理。但在C等语言中,构建在.NET框架上的语言提供了垃圾收集器。它有助于管理记忆。它不能用于释放非托管内存资源。dispose()方法可用于完成此任务。
dispose()方法可用于释放资源,如数据库连接、文件处理程序等。此方法不会自动调用。因此,程序员应该实现这个方法。一旦调用此方法,将释放特定非托管资源的内存。此方法在IDisposable接口中声明。
什么是完成()(finalize ())?
finalize方法仅在不再使用对对象的引用时由垃圾回收器调用。在销毁对象之前调用此方法。这个方法是在析构函数的帮助下实现的。finalize方法在中定义java.lang.object班级。此方法声明为受保护。它不声明为public以避免其他类访问。总的来说,finalize方法可以最小化程序的性能,因为它不能立即释放内存。
什么是dispose()和finalize()之间的相似性(the similarity between dispose () and finalize())?
- dispose()和finalize()都可用于释放为非托管资源分配的内存。
处置()(dispose ())和完成()(finalize())的区别
dispose()与finalize() | |
dispose()是一个关闭或释放非托管资源的方法,例如对象所持有的文件、流。 | finalize是在销毁当前对象所持有的非托管资源之前对其执行清理操作的方法。 |
目的 | |
dispose方法用于在调用非托管资源时释放它。 | finalize方法用于在销毁对象之前释放非托管资源。 |
定义的接口或类 | |
dispose()在接口IDisposable接口中定义。 | finalize()在中定义java.lang.object班级。 |
调用方法 | |
dispose方法由程序员调用。 | finalize方法由垃圾回收器调用。 |
访问说明符 | |
dispose方法是公共的。 | finalize方法受保护。 |
速度 | |
立即调用dispose方法。 | finalize方法调用缓慢。 |
性能 | |
dispose不会降低程序的性能。 | finalize方法可能会使程序的性能最小化。 |
总结 - 处置()(dispose ()) vs. 完成()(finalize ())
本文讨论了C#中的dispose和finalize方法的区别。dispose()和finalize()之间的区别在于,在销毁对象之前,dispose()必须由程序员显式地调用,而finalize()则由垃圾回收器调用。
引用
1.实现Finalize和Dispose以清理非托管资源。可在此处获得2.Sharma,Nitya。“回归基本——处置Vs最终确定。”C角。此处提供
2.莎玛,尼蒂娅。“回归基本——处置Vs最终确定。”C角。