javac не тривиальная оптимизация цикла
Имеем класс:
public class test {
public void main() {
Integer i;
for (int j = 0; j < 100000; j++) {
i = new Integer(10);
i += 10;
}
}
}
Его декомпилированный байт код:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
public class test {
public test() {
}
public void main() {
for(int j = 0; j < 100000; ++j) {
Integer i = new Integer(10);
i = i + 10;
}
}
}
Вопрос: почему javac перенес объявление i в цикл? Хотелось бы почитать доку для этого случая.