Добавляют ли javac или Hotspot автоматически слово final в качестве оптимизация инвариантных переменных?

Похоже, что существует консенсус в том, что пометка переменных-членов как конечных дает преимущество в производительности, поскольку их никогда не нужно перезагружать из основной памяти. Мой вопрос: делают ли javac или Hotspot это автоматически, когда очевидно, что переменная не может измениться. например, будет ли javac сделать окончательным 'x' в этом классе ниже ...

public class MyClass {
   private String x;

   MyClass(String x) {
      this.x = x;
   }

   public String getX() {
      return x;
   }
}

Во второстепенном вопросе, Кто-нибудь представил эмпирические доказательства того, что маркировка членов как final ускоряет выполнение кода? Безусловно, какое-либо преимущество незначительно в любом приложении, выполняющем удаленные вызовы или поиск в базе данных?

5
задан Vladimir Ivanov 5 April 2011 в 09:07
поделиться