[英]Identify owner of native memory used by C# application
我正在開發一個C#應用程序,它可以一直在系統托盤中運行。 因此,我希望最小化應用程序在空閑時使用的內存量。 使用Windows perfmon和Windows任務管理器我得到了一些空閑內存使用數據。
我認為這些數字意味着我的應用程序已經被Windows分配了96MB的內存。 其中50MB已分配給CLR。 CLR分發了40mb。
有沒有辦法弄清楚尚未分配給CLR的其他46mb內存用於什么? 我假設這將是用於將DLL加載到進程中的內存和此本機代碼使用的內存的組合。
編輯:我已下載VMMap並找到以下內容。
任何人都可以建議對Stack,Private Data和Page Table數字進行解釋嗎?
注意:我最初引用的計數器現在顯示了一些奇怪的數字。
這表明CLR保留的內存比分配給進程的內存多。 顯然這不可能是真的,所以TaskManager必須只顯示當前被分頁的內容。
請注意,總內存使用量之間的差異(我不完全確定TaskManager顯示的數字; Windows工具有關於使用不同術語來表示相同概念的錯誤歷史記錄)和“#Total reserved bytes”也可能被CLR使用,只是不是由托管堆(所以CLR的原生分配,加載的DLL等也可能在這里帳戶)。
您可能需要簽出Sysinternals VMMap以獲取更詳細的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.