Java: CleanJ: オブジェクトと配列ってどちらの方が軽いのだろう?

考えるだけ無駄なような疑問ですが、

class Thunk {
  Object value;
}
new Thunk();

new Object[1];

はどちらの方が軽いのかということを考えています。
比較ポイントは

  • メモリ使用量
  • createのコスト
  • loadのコスト
  • storeのコスト

メモリ使用量はほとんど変わらないと思う(けど、全体のサイズが小さいから、1バイトでも結構大きいと思うけど)

配列の場合

create : 命令長 1 + (1 + 2) = 4 byte

iconst_1
anewarray java/lang/Object

load : 命令長 1 + 1 = 2 byte

iconst_0
aaload

store : 命令長 1 + 1 + 1 = 3 byte

iconst_0
aload_1    ; ローカル変数 1 の要素をスタックに積む
aastore

オブジェクトの場合

create : 命令長 (1 + 2) + 1 + (1 + 2) = 7 byte

new Thunk
dup
invokespecial Thunk/<init>()V

load : 命令長 (1 + 2) = 3 byte

getfield Thunk/value Ljava/lang/Object;

store : 命令長 1 + (1 + 2) = 4 byte

aload_1    ; ローカル変数 1 の要素をスタックに積む
putfield Thunk/value Ljava/lang/Object;