例如,假设我们有:
public void doThis() {
final Foo foo = Foo.getInstance();
... initialize foo somehow...
baz(Bar.getInstance(foo)); // adds Bar instance to something
... bar will be popped from some list, used, and disposed of...
}
这种情况会发生内存泄漏吗?
我只是不明白最终局部变量的真正含义。难道只是意味着局部变量不能被重新赋值,仅此而已吗?声明它是否为final,将其放在java堆/内存中的某个位置,这样它就像一个实例变量,但具有不同/唯一的?特别是因为内部/嵌套类可以使用最终局部变量,但不能使用非最终局部变量?
最佳答案
没有。如果没有 final
就没有内存泄漏,那么就不会有 final
的内存泄漏。
final
对局部变量(在 Java 8 中)1 所做的唯一事情是阻止您为变量分配超过一次。
1 在 Java 7 及更早版本中,还有另一个与内存泄漏无关的效果。
关于java - 在Java中,在多次调用的非静态方法中将局部变量设置为final会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936862/