同じインデックスを複数回読み取る場合、JVMは配列の読み取りを最適化できますか?次のことを考慮してください。
public static void foo(int[] array) {
for (int i=0; i<array.length; i++) {
int value1 = array[i];
...
int value2 = array[i];
...
}
...
}
array[i]ループ内で2回読み取られます。ループ内で再割り当てされていないと仮定するarray[i]と、JVMarray[i]は変更されていないと仮定して、その値を1回だけ読み取ることができますか?arrayは渡された可変オブジェクトであるため、1回目の読み取りと2回目の読み取りの間で変更された可能性があります。
生成されたバイトコードを確認しましたが、実際には2回読み取られますarray[i](daload)。JVMはこれを1つの読み取りに最適化することを許可されていますか?