是否有已知(记录)的 .NET 类型集,可以在进程内存的非托管部分分配内存?
例如,微软文档指出 WPF 基础架构为其保留渲染模型分配了非托管内存,以优化性能。还有其他类似的 .NET 框架部分会利用大量的非托管内存吗?
是否有已知(记录)的 .NET 类型集,可以在进程内存的非托管部分分配内存?
例如,微软文档指出 WPF 基础架构为其保留渲染模型分配了非托管内存,以优化性能。还有其他类似的 .NET 框架部分会利用大量的非托管内存吗?
IDisposable
接口,那么很有可能它拥有非托管数据,或者它拥有一个最终拥有非托管数据的托管类。如果它有 Finalize()
方法,那么它直接拥有非托管数据。IDisposable
接口,那么在使用完毕后应该立即调用 Dispose()
方法。当一个类实现IDisposable接口时,你需要小心。这通常表示使用了非托管资源,不仅限于内存,还可能包括文件句柄、套接字等。
一个很好的指标是当该类使用IntPtr时。
IDisposable
对象并不会(直接)执行任何非托管操作 - 但它们会链接到可能会执行非托管操作的对象。例如,在迭代器块中有一个IDisposable
对象 - 但没有任何非托管操作。 - Marc Gravell