举个例子:
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
首先,env
存储在哪里?是吗:
- 由编译器复制到引用它的内部类的隐藏成员变量中
- 复制到堆并在堆上引用
- 留在堆栈上并以某种方式在那里引用
- 别的东西
我的猜测是第一个选项。
其次,做任何由此产生的性能问题(而不是简单地创建env
为类的成员变量并引用它),特别是如果您正在创建大量引用最终局部变量的此类内部类构造。