2011-03-25 68 views
1

我有一個lineEntitys集合。我想看看它的大小在內存中有多大。我可以瞭解一個Collection使用多少內存?

有沒有找到類似於使用sizeof(int)來實現這個的方法?

+0

在運行時?在編譯時?在運行時使用外部進程(如CLR Profiler)? – earlNameless 2011-03-25 11:48:25

+0

我會在運行時需要它,最好不要使用外部進程,但如果它是最好的/唯一的方法,我可以接受一個。 – Andy 2011-03-25 11:58:33

+0

不太可能。主要問題基本上是集合的一部分而不是。對象是否包含?當你總結5個具有相同題材的集合時,你會數它們5次嗎? – TomTom 2011-03-25 12:04:07

回答

5

CLR Profiler for .NET Framework 4

CLR分析器包括多個 非常有用的分配 輪廓的視圖,包括 分配類型,分配和呼叫 圖表,示出的 GC中,時間線的直方圖各代以及由此產生的 收集後的託管堆的狀態,以及顯示 每個方法的分配和組裝 負載的呼叫樹。

另一種選擇是在兩個調用來包裝你的分配GC.GetTotalMemory():

 long memoryUsed = GC.GetTotalMemory(false); 

此外,Inspect and Optimize Your Program's Memory Usage with the .NET Profiler API

+0

這在運行時以編程方式很難做到。 – earlNameless 2011-03-25 11:47:54

+0

這個問題沒有明確說它需要在運行時執行,只是大小需要確定。 – 2011-03-25 11:50:16

+0

我同意這個問題不夠具體,但基於sizeof(int)在問題中使用,它可能最終會在運行時。我爲這個問題增加了一個澄清的評論,因爲解決方案可能會有很大的不同。 – earlNameless 2011-03-25 11:52:28

相關問題