At a computer system, the computer system including one or more processors and system memory, the computer system running an application that allocates parts of the system memory for storing objects, a method for synchronizing reference information between a counted object graph and a garbage collected object graph in preparation for an attempt to reclaim system resources, the method comprising: forming, in the system memory, a cyclic graph, the cyclic object graph including: (i) the counted object graph including one or more reference counted objects having their lifetime managed in accordance with reference counting (ii) the garbage collected object graph including one or more Garbage Collected objects having their lifetime managed in accordance with garbage collection (iii) a particular reference counted object of the counted object graph referencing a particular GC object of GC object graph through a counted wrapper of the counted object graph, the particular GC object referencing the particular reference counted object through a reference wrapper of the GC object graph determining that garbage collection is to be performed; in response to the determination and prior to performing garbage collection: determining that the counted wrapper can be reached from the reference wrapper via the counted object graph; and the method being further characterized in that it includes: protecting the lifetime of the particular GC object referenced through the counted wrapper, wherein the act of protecting the lifetime of the GC object referenced through the counted wrapper comprises creating a reference from the reference wrapper to the GC object; and performing garbage collection to determine if any allocated system resource can be reclaimed, garbage collection considering that the particular GC object is referenced by the created reference from the Reference Wrapper such that the created reference can keep the particular GC object alive. forming, in the system memory, a cyclic graph, the cyclic object graph including: (i) the counted object graph including one or more reference counted objects having their lifetime managed in accordance with reference counting (ii) the garbage collected object graph including one or more Garbage Collected objects having their lifetime managed in accordance with garbage collection (iii) a particular reference counted object of the counted object graph referencing a particular GC object of GC object graph through a counted wrapper of the counted object graph, the particular GC object referencing the particular reference counted object through a reference wrapper of the GC object graph (i) the counted object graph including one or more reference counted objects having their lifetime managed in accordance with reference counting (ii) the garbage collected object graph including one or more Garbage Collected objects having their lifetime managed in accordance with garbage collection (iii) a particular reference counted object of the counted object graph referencing a particular GC object of GC object graph through a counted wrapper of the counted object graph, the particular GC object referencing the particular reference counted object through a reference wrapper of the GC object graph determining that garbage collection is to be performed; protecting the lifetime of the particular GC object referenced through the counted wrapper, wherein the act of protecting the lifetime of the GC object referenced through the counted wrapper comprises creating a reference from the reference wrapper to the GC object; and performing garbage collection to determine if any allocated system resource can be reclaimed, garbage collection considering that the particular GC object is referenced by the created reference from the Reference Wrapper such that the created reference can keep the particular GC object alive.