2011-07-30 3 views

答えて

3

「公称」とは、CLRが値をトラッキングするために使用するストレージを除いて、これらのデータ型に含まれる実際のデータが占めるバイト数を意味します。値の型がボックス化されたときに発生するヒープ割り当て。

EDIT

リンク先の記事を読んで、私は次のセクションに気づい:

メモリ消費

あなたは基本データ型を宣言すると、それが安全ではありませんがそのメモリ消費量が公称ストレージ割り当て量と同じであると仮定します。これは、次の考慮事項によるものです。

ストレージ割り当て。共通言語ランタイムは、アプリケーションが実行されているプラ​​ットフォームの現在の特性に基づいてストレージを割り当てることができます。メモリがいっぱいになると、宣言された要素は可能な限り密接にパックされます。他の場合では、パフォーマンスを最適化するために、メモリアドレスを自然なハードウェア境界に揃えることができます。

プラットフォーム幅。 64ビットプラットフォームでのストレージ割り当ては、32ビットプラットフォームでの割り当てとは異なります。

したがって、基本的に、これは値型当たりの総ストレージが公称ストレージであることを+ワード境界+可能ヒープ割り当てに値を整列させるために使用することができるどのようなパディング言っている - ランタイムの裁量で、再び。

2

「公称」とは、ランタイムが、与えられた変数に対して意味をなさないほど多くのスペースを割り当てることが自由であるという事実を指します。 shortはそのデータを格納するために2バイトしか必要としませんが、ランタイムは変数に4バイトを割り当てます。たとえば、32ビットマシンのレジスタに格納されたshortは、4バイトを「占有」しています。同様に、スタックは、例えば、ワード整列を維持するために、パラメータとしてshortを渡すときに、4バイトのスタック空間が使用されるという点で同じように動作します。メモリーが自然な単語境界に位置合わせされると、メモリー・アクセスは一般的に高速化されるため、ランタイムによってメモリーを整列するためのスペースが「無駄になる」ことがあります。 64ビットマシンでは、同じシナリオではおそらくそれぞれ8バイトを使用します。