【发布时间】:2013-02-20 10:11:50
【问题描述】:
假设我有以下代码:
public void process() {
byte[] data = new byte[size];
... // code that uses the above data
longProcess(); // a very long running process that does not use the data.
}
假设数据没有在程序的其他任何地方引用,JVM 是否足够聪明,可以在长进程仍在运行时允许数据被垃圾收集?
如果没有,会添加
data = null;
在漫长的过程允许这种情况发生之前?
【问题讨论】:
-
你可以把代码用括号括起来。
-
data = null使其有资格被垃圾收集。 -
如果设置为null,你就无法到达它了,GC!
-
不同的 JVM 可能表现不同...
-
@Affe 数组不驻留在 Java 的堆栈中,只是对它的引用。