2011-06-12 41 views
5

我有一個對象,我需要緩存IIS中的Web應用程序的幾個,所以我分析了每個實例使用多少內存。GC.GetTotalMemory()和CLR Profiler數字之間爲什麼會有很大差異?

我寫了一個小exe,我打電話GC.GetTotalMemory(true)前和施工後的差額大約爲335K,但如果分析它在CLR profiler它顯示我22 MB的內存用於對象,沒有任何意義。

我在CLR分析器中解釋不正確?
我應該在哪裏檢查分析器以查看單個對象大小?

+0

CLR配置文件是值得你付出的。不要浪費你的時間,除非你的時間是免費的。 – 2011-06-12 14:02:14

+0

你只做了一個實例嗎?如果你做了多個實例呢?我想(但這是一個瘋狂的猜測),22MB將保持穩定,直到你有足夠的實例來填補它(所以65個對象後,它可能會跳到44Mb)? – 2011-06-12 19:02:21

回答

1

根據MSDN:垃圾收集器不保證收集到所有無法訪問的內存。

look here

CLR分析器顯示分配的所有存儲器;

如果使用GC.GetTotalMemory(false)會出現什麼結果?

相關問題