匿名类中使用最终变量时的垃圾收集

2024-01-03

如果我有类似以下的代码:

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
        }
    });
}

如果有的话,什么时候会被垃圾收集?只有当任务被收集时,还是会因为它是最终的而永远保留在内存中?


o might一旦不再可达,就收集垃圾,无论它是否是最终的。显然,只要execute正在运行,如果需要访问o,它会阻止GC。

When execute已完成运行,并假设您尚未存储任何引用o(例如在集合中),它将被标记为准备好进行垃圾回收。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匿名类中使用最终变量时的垃圾收集 的相关文章

随机推荐