Java 最终局部变量存储在哪里?
2022-09-02 13:33:20
举个例子:
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
首先,存储在哪里?是吗:env
- 由编译器复制到引用它的内部类的隐藏成员变量中
- 复制到堆并引用到堆上
- 留在堆栈上,并以某种方式引用在那里
- 别的
我的猜测是第一种选择。
其次,执行执行此操作(而不是简单地创建为类的成员变量并引用它)引起的任何性能问题,尤其是在创建大量引用最终局部变量的内部类构造时。env