web-dev-qa-db-ja.com

整数と整数:メモリに関して

Integer nint nが占有するメモリに違いがあるかどうか疑問に思っていました。

int nは通常4バイトを占めることを知っていますが、Integer nはどうですか

38

一般に、HotspotのJavaオブジェクトで使用されるヒープメモリは、次のもので構成されます。

  • 数バイトの「ハウスキーピング」情報で構成されるオブジェクトヘッダー。
  • primitiveフィールドのサイズに応じたメモリ(int n-> 32ビット)
  • referenceフィールドのメモリ(各4バイト)(整数n-> 32ビット)
  • パディング:オブジェクトデータの後に潜在的に数個の「無駄な」未使用バイトがあり、すべてのオブジェクトがバイトの便利な倍数であるアドレスで開始し、オブジェクトへのポインタを表すのに必要なビット数を減らします。

マークピーターズの提案に従って、以下のリンクを追加したいと思います http://www.javamex.com/tutorials/memory/object_memory_usage.shtml

42
Noufal Panolan

Javaの整数オブジェクトは16バイトを占有します。

64ビット対32ビットJVMの実行が違いを生むかどうかはわかりません。 primitive typesの場合、重要ではありません。しかし、64ビットシステムでオブジェクトのメモリフットプリントが(もしあれば)どのように変化するのか、特定できません。

こちらで自分でテストできます:

Javaヒント130:データサイズを知っていますか?

8
Craig Otis

Intの場合:ラッパーのない要素ごとに4バイト、ラッパーのある要素ごとに16バイトが使用されます。

ラップされたdoubleは、要素ごとに24バイトとして報告され、実際のdouble値は64ビット(8バイト)として報告されます。

詳細については こちら

3
java_mouse