ホームページ > バックエンド開発 > 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 構造内の隠しフィールド「Basic Instance Size」が明らかになりました。このフィールドには、オブジェクトのインスタンス データ サイズが保存されます。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート