我想知道析构函数和垃圾收集器之间有什么区别,析构函数用于在应用程序生命周期结束时处理所有未使用的对象,垃圾收集器的使用也是如此,垃圾收集器可以手动调用或完成在应用程序结束时,与析构函数相同,两者都是可选的,用于处理未引用的对象,任何人都可以指出我的确切区别是什么
垃圾收集器和终结器/析构函数有着内在的联系——但是,大多数对象不需要(也不具有)析构函数。它们实际上在托管代码中非常罕见,通常用于确保释放非托管资源。如果一个对象有析构函数/终结器,垃圾收集器会在收集的同时调用它(可能在下一次传递中)。垃圾收集是不确定的——它发生时就会发生——通常与内存压力有关。
然而,更常见的是 IDisposable。这允许更可预测的资源释放模式now(而不是下次 GC 发生时)。通常,具有终结器的类会also是 IDisposable,Dispose() 实现禁用析构函数(如果我们已经清理了则不需要)。请注意,Dispose() 与垃圾回收无关,但通过“using”语句提供语言支持。
IDisposable 是much比终结器更常见。您有责任确保所有 IDisposable 都得到处置。附加说明:处置某些东西不会导致该对象被收集;这仅由 GC 根据 GC 选择的时间表来完成。处置,而不是释放相关资源。例如,您不希望文件在 GC 发生之前被锁定打开;这里的 Dispose() 解锁文件(通过释放操作系统文件句柄)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)