Java优化器和冗余阵列评估

amp*_*ent 7 java optimization performance compiler-optimization

这是关于Java优化的一个非常基本的问题.

如果你有一个简单的for循环迭代数组并在循环的头部使用array.length而不是之前评估它,那么你只做一次(这是我几乎总是这样做):

for(int i=0; i<array.length;i++) { ... }
Run Code Online (Sandbox Code Playgroud)

是否可以优化语句,以便JVM知道数组是否在循环期间发生变化,以便array.length每次都不重新评估?

Pet*_*rey 9

如果另一个线程没有同时修改数组,则array.length只能被有效地评估一次,

更重要的是,除非该领域是volatileJVM将做出这个假设是否真实.