Где хранятся финальные локальные переменные Java?

Возьмите следующий пример:

public void init() {
    final Environment env = new Environment();
    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
             env.close();
        }
     });
}

Во-первых, гдеenv хранится? Это:

копируется компилятором в скрытую переменную-член внутреннего класса, который ссылается на негоскопировать и сослаться на кучуоставил в стеке и как-то там ссылалсячто-то другое

мойУгадай это первый вариант.

Во-вторых, делать какие-либо проблемы с производительностью, которые возникают из-за этого (а не просто создаватьenv в качестве переменной-члена класса и ссылки на нее как таковой), особенно если вы создаете большое количество таких конструкций внутреннего класса, которые ссылаются на конечные локальные переменные.

Ответы на вопрос(1)

Ваш ответ на вопрос