Col*_*lby 8 java garbage-collection final
如果我有类似以下的代码:
public Constructor(final Object o) {
taskSystem.add(new CycleTask(15, 15, -1) {
@Override
public void execute() throws Throwable {
//access o here every 15 cycles forever
}
});
}
Run Code Online (Sandbox Code Playgroud)
什么时候会被垃圾收集,如果有的话?只有当任务被收集,或者它会永远留在记忆中,因为它是最终的?
o 一旦无法再到达,可能会收集垃圾,无论是否是最终的.显然,只要execute运行,如果需要访问o,就会阻止GC.
当execute完成运行并假设您没有存储任何引用o(例如在集合中)时,它将被标记为准备好进行垃圾回收.