Skip to content

20260103_配列のメモリ構造について

配列には大きくプリミティブ型配列と参照型配列があり、それぞれについてメモリ構造、すなわちスタック領域とヒープ領域領域に何が格納されるか、をTILする。

プリミティブ型配列

java
int[] a = new int[2];
a[0] = 0;
a[1] = 1;

上記はプリミティブ型配列の1例としてint型配列を挙げている。 この場合、ヒープ領域には配列オブジェクトと各要素の値が設定され、スタック領域には配列オブジェクトへの参照が設定される。

[スタック]
a ----------> [ヒープ 配列オブジェクト]
               element[0]:0
               element[1]:1

参照型配列

java
String[] s = new String[2];
s[0] = "hoge";
s[1] = "fuga";

上記は参照型配列の1例としてString型配列を挙げている。 この場合、ヒープ領域①には配列オブジェクトが、ヒープ領域②③には各要素の文字列オブジェクトが、スタック領域には配列オブジェクトへの参照が設定される。

[スタック]
s ----------> [ヒープ① 配列オブジェクト]
               element[0]: ----------> [ヒープ② String"hoge"]
               element[1]: ----------> [ヒープ③ String"fuga"]