簡體   English   中英

找出C#中對象使用了多少內存?

[英]Find out how much memory is being used by an object in C#?

有沒有人知道找出一個對象實例占用多少內存的方法?

例如,如果我有以下對象的實例:

TestClass tc = new TestClass();

有沒有辦法找出實例tc占用多少內存?

問的原因是,雖然C#內置了內存管理,但我常常遇到的問題是沒有清除對象的實例(例如跟蹤某些內容的List)。

有幾個相當不錯的內存分析器(例如ANTS Profiler),但在多線程環境中很難弄清楚哪些屬於哪里,即使使用這些工具。

如果您沒有嘗試在代碼本身中執行此操作,我假設基於您的ANTS參考,請嘗試查看CLRProfiler(目前為v2.0)。 它是免費的,如果您不介意相當簡單的UI,它可以提供有價值的信息。 它將為您提供各種統計數據的深入概述。 我曾經用它作為尋找記憶韭菜的一種工具。

在此處下載: http//www.microsoft.com/downloads/details.aspx?FamilyId = A362781C- 3870-43BE-8926-862B40AA0CD0& displaylang = en

如果您確實希望在代碼中執行此操作,則CLR具有您可以使用的分析API。 如果您在CLRProfiler中找到信息,因為它使用這些API,您也應該能夠在代碼中執行此操作。 更多信息: http//msdn.microsoft.com/de-de/magazine/cc300553(en-us).aspx

(它並不像使用WinDbg一樣神秘,但要做好准備,深入CLR。)

由Microsoft免費提供的CLR Profiler在這類事情上表現非常出色。

可以在此處下載整個剖析器的介紹。 此外,模式與實踐團隊還將一些內容放在一起,詳細介紹了如何使用分析器。

它在向您顯示在這些線程中創建的不同線程和對象方面做了相當合理的工作。

希望這會有所啟發。 快樂的剖析!

我對MemProfiler有很好的經驗。 它為您提供了創建對象時的堆棧跟蹤以及為什么對象仍未進行垃圾回收的所有圖形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM