Dot-Net

找出 .NET 對象的大小

  • November 27, 2008

我試圖找出我的對象佔用了多少記憶體,以查看其中有多少最終在大對象堆上(超過 85,000 字節)。

是否像為 int 添加 4、為 long 添加 8、為每個對象的任何引用類型等添加 4(或 8,如果您使用 64 位,則為 8)一樣簡單,或者是否有方法、屬性等的成本?

不要忘記實際對象的大小不包括它引用的任何對象的大小。

唯一可能最終出現在大型對象堆上的是數組和字元串——其他對象本身往往相對較小。即使是具有(比如說)10 個引用類型變數(x86 上每個 4 個字節)和 10 個 GUID(每個 16 個字節)的對像也只會佔用大約 208 個字節(類型引用和同步塊有一點成本)。

同樣,在考慮數組的大小時,不要忘記如果元素類型是引用類型,那麼只有引用的大小才對數組本身計數。換句話說,即使你有一個包含 20,000 個元素的數組,即使它引用了更多的數據,數組對象本身的大小也只會超過 80K(在 x86 上)。

引用自:https://stackoverflow.com/questions/324053