簡體   English   中英

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

[英]Which managed classes in .NET Framework allocate (or use) unmanaged memory?

是否有一組已知的(已記錄的).NET類型在進程內存的非托管部分分配內存?

例如,Microsoft記錄了WPF基礎結構為其保留的呈現模型分配了非托管內存以優化性能。 是否還有.NET框架的其他部分使用大量非托管內存?

如果它實現了IDisposable ,那么它很有可能擁有非托管數據,或者它擁有一個最終擁有非托管數據的托管類。 如果它有Finalize() ,則表明它直接擁有非托管數據。

根據經驗,如果它實現了IDisposable ,那么在你完成后立即Dispose()

據我所知,沒有一個文檔描述或識別框架中的哪些類使用非托管資源。 特定類的MSDN文檔可能會,但這需要您查看特定的類。

總的來說,可以肯定的是,許多類在某些時候使用了一些非托管代碼。 例如,許多Windows窗體控件只是Win32控件的包裝器,因此它們使用非托管資源。

當類實現IDisposable時,您需要小心。 這通常表示未使用的資源的使用,但不限於內存,但也可能是文件句柄,套接字等。

一個很好的指標是當類使用IntPtr時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM