If I have code similar to the following:
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
}
});
}
When would o be garbage collected, if ever? Only when the task has been collected, or will it remain in memory forever because it’s final?
omight get garbage collected once it is not reachable any longer, whether it is final or not. Obviously, as long asexecuteis running, if it needs to accesso, it will prevent GC.When
executeis done running, and assuming you have not stored any references too(for example in a collection), it will be flagged as ready for garbage collection.