是否有一组已知的(已记录的).NET类型在进程内存的非托管部分分配内存?
例如,Microsoft记录了WPF基础结构为其保留的呈现模型分配了非托管内存以优化性能。是否还有.NET框架的其他部分使用大量非托管内存?
答案 0 :(得分:5)
如果它实现IDisposable
,它很可能拥有非托管数据,或者拥有最终拥有非托管数据的托管类。如果它有Finalize()
,则表示它直接拥有非托管数据。
根据经验,如果它实现了IDisposable
,那么只要你完成就Dispose()
。
答案 1 :(得分:1)
据我所知,没有单个文档描述或识别框架中的哪些类使用非托管资源。特定类的MSDN文档可能会,但这需要您查看特定的类。
总的来说,可以肯定的是,许多类在某些时候都使用了一些非托管代码。例如,许多Windows窗体控件只是Win32控件的包装器,因此它们使用非托管资源。
答案 2 :(得分:0)
当类实现IDisposable时,您需要小心。这通常表示未使用资源的使用,但不限于内存,但也可能是文件句柄,套接字等。
这是一个很好的指标,当班级使用IntPtr时。