【发布时间】:2017-10-17 15:01:56
【问题描述】:
我一直在阅读有关 Dispose 模式的信息,并且我有点了解它的用途(清理资源以便我的应用程序不会泄漏内存),但我希望在一个实际示例中看到它。
我的想法是编写一个简单的应用程序,首先使用一些资源并且不释放它们,然后在一些代码更改后,适当地释放这些资源。我想看到的是代码更改之前/之后的内存使用情况,以可视化处置的帮助。
问题:我可以使用哪些对象?我试图用一些大图像(JPEG 图像 15+ MB 大小)来做,但我不能用它来构建一个实际的例子。当然,我对其他想法持开放态度。
【问题讨论】:
-
任何继承
IDisposable..... stackoverflow.com/questions/538060/… 还有 - codeproject.com/Articles/413887/… -
仅供参考,如果您不处置这些资源,GC 仍会清理这些资源(前提是它们是受管理的)。一个很好的例子是调用 C++ DLL,这需要您手动分配内存,然后使用 dispose 清理/释放所有内容。
-
你通常将它用于非托管资源,只是说
-
@rolls - 您的声明“仅供参考,如果您不处理这些资源,GC 仍会清理这些资源(假设它们是受管理的)”有点误导。你把这句话最重要的部分放在括号里,让它看起来不重要。大多数
IDisposable对象拥有非托管资源,因此它们不会被 GC 清理。
标签: c# .net memory-leaks idisposable