AJM*_*AJM 4 .net c# idisposable
我很满意如何实现IDisposable ..
但是,我不清楚没有正确实现这一点的确切后果.是不是因为非托管资源永远不会被清除从而导致内存泄漏,或者内存最终会被回收,而不是及时回收?
Ree*_*sey 12
这取决于.
如果有问题的对象无法实现IDisposable,但仍然正确实现终结器,则资源最终将被清除.
但是,如果它没有正确实现终结器,并且它正在包装非托管资源,那么该资源将被泄露.这通常是资源泄漏(即:泄漏存储为IntPtr的HANDLE)比传统的"内存泄漏"更多(当然,指向的对象仍然使用内存).
记忆最终会被回收吗?
这里有一点...... IDisposable与记忆无关 - 它与资源有关.这些资源通常使用自己的内存,但实现IDisposable不会导致垃圾收集器更快地回收内存.