我正在阅读的来源,java.util.HashMap发现table如果该方法中多次使用该值,则几乎总是将字段分配给局部变量。
java.util.HashMap
table
由于此类已记录为不是线程安全的,并且字段也不是可变的,所以这有什么意义?它会使代码更有效吗?
通过将成员字段放入本地范围(即当前堆栈框架)中,可以为整个方法执行固定引用。因此,每次使用时,您对同一对象都有相同的引用。
无需将其置于本地范围内,对字段的每次访问均通过this引用(隐式或显式)进行。因此,对于每次访问,JVM必须获取该字段的当前值- 从上一次访问开始,理论上该值可能会发生变化。
this
除了更可靠之外,JIT还可以优化访问,即循环(内联值,无论如何)。
对性能的影响很小,但可以测量。