.NET Framework中的哪些托管类分配(或使用)非托管内存?

时间:2009-10-04 02:27:51

标签: c# .net memory-management unmanaged

是否有一组已知的(已记录的).NET类型在进程内存的非托管部分分配内存?

例如,Microsoft记录了WPF基础结构为其保留的呈现模型分配了非托管内存以优化性能。是否还有.NET框架的其他部分使用大量非托管内存?

3 个答案:

答案 0 :(得分:5)

如果它实现IDisposable,它很可能拥有非托管数据,或者拥有最终拥有非托管数据的托管类。如果它有Finalize(),则表示它直接拥有非托管数据。

根据经验,如果它实现了IDisposable,那么只要你完成就Dispose()

答案 1 :(得分:1)

据我所知,没有单个文档描述或识别框架中的哪些类使用非托管资源。特定类的MSDN文档可能会,但这需要您查看特定的类。

总的来说,可以肯定的是,许多类在某些时候都使用了一些非托管代码。例如,许多Windows窗体控件只是Win32控件的包装器,因此它们使用非托管资源。

答案 2 :(得分:0)

当类实现IDisposable时,您需要小心。这通常表示未使用资源的使用,但不限于内存,但也可能是文件句柄,套接字等。

这是一个很好的指标,当班级使用IntPtr时。