簡単に言えば、それが問題であることがわかっていない限り、知る必要はありません。
より長い答えは、オブジェクトのヘッダーの約 16 バイト、各フィールドに 4 バイト (合計を 8 バイト境界に丸める)、つまり 24 バイトを使用することです。
参照などのローカル変数はスタックに割り当てられ、通常はカウントされません。
通常サイズを気にしない理由は、1 MB はあなたの時間の約 2 秒の価値があるからです (メモリの小売価格と最低賃金を比較すると)。保存できるメモリの値 (この場合)
[4 GB モジュールの価格は 18 ポンドで、最低賃金は 8.50 ポンドなので、1 GB は約 0.5 時間の価値があります。1 MB は約 2 秒に相当します。]
別の言い方をすれば、単純な変更で 1 MB のメモリを節約できない場合は、時間を無駄にしている可能性があります。
同じことがモバイル デバイスにも当てはまりますが、程度は低くなります (メモリのコストが高くなり、数千のデバイスに展開された場合、数百バイトを節約するための総コストが重要になる可能性があります)。
long
この結果、代わりに、int
またはdouble
代わりに(両方とも余分な文字が 1 つある)書くのにかかる時間は、float
使用する余分なメモリよりも数千倍の価値がある可能性があります。ただし、ほとんどの場合、float の代わりに double を使用し、int の代わりに long を使用することをお勧めします.
オブジェクトが使用するスペースの量 (またはオブジェクトの作成に使用されるメモリの量) を測定する最も簡単な方法は、TLAB をオフ-XX:-UseTLAB
にして、オブジェクトが作成される前後のメモリ量を Runtime.totalMemory - freeMemory で測定することです。
ただし、データ構造が YourKit (VisualVM は無料) のようなプロファイラーに表示されるまで待ってから、問題と見なすことを好みます。