Java のオブジェクトのメモリ使用量について

http://www.javaworld.com/javaworld/javatips/jw-javatip130.html

の記事より。まとめるとこういう感じ。

・すべてのオブジェクトは基本的に最低 8byte を要する。
Object は 8byte
・CPU に依存する話ではあるが、8byte ワードバウンダリで、
Long の場合、16byte、Integer の場合、12byte とはならず、
Integer の場合も 16byte となり、4byte は使われていない。

・プリミティブ配列の場合は、基本の8byteプラス、8byte単位で拡張。
int なら
0->16 byte
1->16 byte
2->24 byte
3->24 byte ... という感じ。

・多次元配列はオーバーヘッドがでかい。
int[256] は 1040byte 消費なのに対して、int[256][2] は
3600 byte を消費する。

・String は2文字までは40byte、3文字からは48byte。
以降4文字毎に8byte単位で拡張。


記事後半で、メモリの節約の仕方が記載されてるけど、
さすがにそこまではやらないので、割愛。