Java GC does not target any circular references, it just determines if objects are reachable or not, regardless of whether they reference each other in a cycle.
Using algorithms like mark-and-sweep or generational collection, the garbage collector identifies unreachable objects (including those involved in circular references) and collects them. The GC doesn't need to explicitly look for circular reference.