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 в цикл? Хотелось бы почитать доку для этого случая.


Ответы (0 шт):