An object becomes eligible for garbage collection when there is no live reference for that object or it can not be reached by any live thread. The cyclic reference doesn’t count as a live reference and if two objects are pointing to each other and there is no live reference for any of them, then both are eligible for GC. Also Garbage collection thread is a daemon thread that will run by JVM based upon the GC algorithm and when runs it collects all objects which are eligible for GC.