Jeśli mam kod podobny do poniższego:Garbage collection gdy zmienne końcowe stosowane w anonimowych klas
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
}
});
}
Kiedy o zostać zebrane śmieci, jeśli w ogóle? Tylko wtedy, gdy zadanie zostanie zebrane, czy pozostanie w pamięci na zawsze, ponieważ jest ostateczne?
To nie jest bardzo dobrze wyrażone. "Przestrzeń życiowa" powinna być "dożywotnią". Oczywiście osoba wywołująca metodę musi mieć odwołanie, a instancja klasy anonimowej ma inną. "Końcowe" słowo kluczowe zabrania jakiejkolwiek modyfikacji tej * zmiennej * po inicjalizacji, * podczas * wykonania metody, która jest całym jej zakresem. – EJP