部分出於好奇 - 我們想知道我們的應用程序中發生了什麼 - 部分原因是我們需要在代碼中發現一些潛在的問題,我喜歡在運行時跟蹤一些常規值我們的網絡應用程序。這尤其包括某些對象圖的分配內存。確定.NET中對象圖的內存使用情況
我們的應用程序會將一些數據永久保留在內存中以使其可靠可用。這可以總結爲幾GB的內存,而做幾乎相同的東西的其他應用程序只分配一個或兩個。
由於要求的性能,我們無法在運行時連接內存分析器。 因此,在運行時分析一個對象圖很好,可以打印出哪些部分的數據在某些情況下非常大,哪些不那麼大。這將有助於我們更好地理解數據會發生什麼並可能優化應用程序的行爲。
對象圖的裝置,從一定對象開始,測量其在存儲器大小,遞歸地跟蹤通過所有屬性,字段,列表與他們的所有元素等所有引用的對象和加入它們的相應尺寸,直到我們具有信息該對象和所有相關對象使用了多少內存。
實際上,我想回答的問題是:當我剛剛釋放對此錨點對象的最後一個引用時,在下次運行時清理此對象圖時GC能夠釋放多少?
這是什麼讓我感到困惑:內存分析器如何獲取這些信息?這應該在同一過程中更有可能。 – 2014-10-08 18:41:22