1. A computer-implemented method for performing memory management in an object-oriented programming environment, the computer-implemented method comprising: creating a first object; creating a count object associated with the first object, the count object including a reference counter and the count object being distinct from the first object; creating a first reference pointer that points to the first object and to the associated count object; and incrementing the reference counter in the count object if the first reference pointer is copied.