A garbage collector collects a dynamically allocated heap by employing the train algorithm, in which "car" sections of a heap generation are organized in groups, or "trains." When a car section comes up for collection, objects that it contains are evacuated if they are referred to by references located in cars not currently being collected. The cars to which they are evacuated belong to the trains that contain the references. The trains form a sequence in which their constituent cars are to be collected, and objects that are directly allocated in the generation are placed into trains that precede some existing train in the collection sequence.
A system and method for detecting memory leaks in a garbage collected environment. In particular, the present invention provides a mechanism by which objects in the memory space of a virtual machine are analyzed as to whether they are warm or cold, i.e., how long they have persisted in memory without being accessed or referenced by another object. Following this analysis, the objects are clustered into groups of warm or cold objects, and any links from warm clusters to cold clusters are determined. This information is then provided to the software developer for use in detecting and analyzing potential memory leaks.