A phantom reference in Java is a type of reference object that allows a programmer to determine exactly when an object has been removed from memory, providing a more flexible alternative to finalize methods for cleanup operations. Unlike weak or soft references, phantom references do not allow the referenced object to be accessed, ensuring that it is eligible for garbage collection as soon as it becomes phantom reachable.