gpt4 book ai didi

c# - 未正确实现 IDisposable 的后果

转载 作者:太空狗 更新时间:2023-10-29 23:58:29 25 4
gpt4 key购买 nike

我对如何实现 IDisposable 很满意..

但是,我不清楚不正确执行此操作的确切后果。是非托管资源永远不会被清除从而导致内存泄漏,还是内存最终会被回收,只是没有及时回收?

最佳答案

视情况而定。

如果有问题的对象未能实现 IDisposable,但仍正确地实现了终结器,资源最终将得到清理。

但是,如果它没有正确地实现一个终结器,并且它正在包装一个非托管资源,那么该资源就会被泄露。这比传统的“内存泄漏”更常见于资源泄漏(即:泄漏存储为 IntPtr 的 HANDLE)(当然,被指向的对象仍然使用内存)。

will the memory eventually get recycled anyway?

这里有一点……IDisposable 与内存无关 - 它与资源有关。这些资源通常使用它们自己的内存,但实现 IDisposable 不会使您的垃圾收集器更快地回收内存。

关于c# - 未正确实现 IDisposable 的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4606801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com