Any object that has been finalized directly, through the application itself calling finalize on it, may not yet be unreachable. Like any normal object it only becomes eligible for reclamation when it is unreachable. If such an object was also registered for finalization using finalize-when-unreachable, it can end up being finalized again via the queue mechanism.