Integer n
とint n
が占有するメモリに違いがあるかどうか疑問に思っていました。
int n
は通常4バイトを占めることを知っていますが、Integer n
はどうですか
一般に、HotspotのJavaオブジェクトで使用されるヒープメモリは、次のもので構成されます。
マークピーターズの提案に従って、以下のリンクを追加したいと思います http://www.javamex.com/tutorials/memory/object_memory_usage.shtml
Javaの整数オブジェクトは16バイトを占有します。
64ビット対32ビットJVMの実行が違いを生むかどうかはわかりません。 primitive typesの場合、重要ではありません。しかし、64ビットシステムでオブジェクトのメモリフットプリントが(もしあれば)どのように変化するのか、特定できません。
こちらで自分でテストできます:
Intの場合:ラッパーのない要素ごとに4バイト、ラッパーのある要素ごとに16バイトが使用されます。
ラップされたdoubleは、要素ごとに24バイトとして報告され、実際のdouble値は64ビット(8バイト)として報告されます。
詳細については こちら