2013-10-31 56 views
2

我們的產品基於保存在MemoryCache對象中的內存中對象數據集。如何確定MemoryCache類消耗多少內存?

我想知道存儲在緩存中的數據消耗了多少內存。

因爲我們可能具有相同的機器 (每它自己的應用程序域之內)上運行的產品的多個實例,它會立即看到誰消耗了什麼是重要的?

的類具有像:CacheMemoryLimit和PhysicalMemoryLimit,但沒有讓我知道消耗多少內存的屬性?

在此先感謝!

+0

GetCount()* Marshal.SizeOf(你的類型) –

+0

在我的List對象中做這件事,我得到一個錯誤: 「 - 不能作爲非託管結構編組;沒有有意義的大小或偏移量可以被計算。「 – Denis

+0

我看到 - 看來你只能得到某些類型的大小。 –

回答

2

檢查內存的最佳方法是使用WinDbg + SOS/Psscor。特別是,來自Tess的this article將爲您提供腳本來自動化MemoryCache檢測。但是,如果您不熟悉這些工具和.net內部結構,則花費幾個小時來設置環境並瞭解其工作原理是很常見的。

另一種方法是使用調試工具2.0,可用here。您只需創建工作進程的內存轉儲(任務管理器/權利Clic /創建轉儲文件)並選擇內存分析。該報告包含部分網頁緩存的大小

如果你想做Live Memory檢查,你可以使用.net團隊的ClrMD。介紹可用here