【发布时间】:2009-12-22 11:02:00
【问题描述】:
举个例子:
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
首先,env 存储在哪里?是吗:
- 由编译器复制到引用它的内部类的隐藏成员变量中
- 复制到堆并在堆上引用
- 留在堆栈上并以某种方式在那里引用
- 别的东西
我的猜测是第一个选项。
其次,解决由此产生的任何性能问题(而不是简单地将env 创建为类的成员变量并引用它),特别是如果您正在创建大量引用 final 的此类内部类构造局部变量。
【问题讨论】:
标签: java performance final local-variables