Correct Answer: The garbage collector assumes that all objects in the managed heap are garbage It starts walking the roots and builds a graph of all objects reachable from the roots recursively It stops when it attempts to add an object to the graph that it previously added The graph contains the set of all objects that are reachable from the application's roots Any object/s that is not in the graph is not accessible by the application, and is considered garbage Collection only occurs when the heap is full In such a case, each and every garbage object calls the Finalize method and reclaims the unused memory