首頁 > 後端開發 > C++ > 如何確定 C# 物件實例的大小(以位元組為單位)?

如何確定 C# 物件實例的大小(以位元組為單位)?

Mary-Kate Olsen
發布: 2025-01-10 16:01:53
原創
853 人瀏覽過

How Can I Determine the Size of a C# Object Instance in Bytes?

測量 C# 物件的記憶體佔用

精確確定 C# 物件實例的記憶體使用情況對於效能調整和有效的記憶體管理至關重要。 儘管 C# 缺乏直接的內建函數,但我們可以利用未記錄的內部機制。

利用 CLR 內部資料

MSDN 雜誌對 CLR 內部結構的探索揭示了 TypeHandle 結構中的一個隱藏欄位「基本實例大小」。此欄位儲存物件的實例資料大小。

運用RuntimeTypeHandle與反思

我們可以使用反射存取該欄位來取得物件的TypeHandle。 以下程式碼說明如何擷取實例大小:

<code class="language-csharp">object obj = new List<int>();
RuntimeTypeHandle th = obj.GetType().TypeHandle;
int size = *(*(int**)&th + 1);
Console.WriteLine(size);</code>
登入後複製

重要注意事項:

此方法依賴內部 CLR 實作細節。 無法保證其在所有場景或未來 .NET 版本中的可靠性。 此外,欄位偏移量和資料類型在不同平台上可能會有所不同。

其他注意事項:

對於陣列和字串,基本實例大小僅反映對實際資料的引用的大小。 要計算總記憶體使用量,必須新增數組或字串中元素的大小。

以上是如何確定 C# 物件實例的大小(以位元組為單位)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板