Josh Bloch 提到在双重检查习语中使用局部变量可能会提高性能(EJ,第 2 版 p284),并说示例代码在他的机器上运行速度比没有局部变量的速度快 25%。所以问题是,为什么它更快?在局部变量版本的情况下,它访问实例变量 3 次,在正常情况下它访问实例变量 4 次。这是“25%”增长背后的原因还是还有其他原因?
编辑:只有在第一次创建实例时才能访问 3 或 4 次。此后,它是1或2次。
EDIT2:检查此问题的已接受答案以查看示例代码。我认为这是针对 Java 6 的。如何解决 Java 中的“双重检查锁定已损坏”声明?