1. A method comprising: detecting alive memory objects having survived at least one garbage collection at a first virtual machine, the alive memory objects relating to a software application running at the first virtual machine of a first computer system; tracing the alive memory objects, the tracing including a method statistic trace based on an average runtime of each of the alive memory objects as determined from a number of times each alive memory object is called for a use and a time length of the use, and an age trace determining a number of garbage collections each alive memory object has survived, and assigning an age to each alive memory object based on the survived number of garbage collections, the age including a numeric value assigned to each alive memory object representing its number of garbage collection survivals; and preventing memory leaks by invoking an act on the alive memory objects based on results of the tracing, the act including removing one or more alive memory objects or tagging one or alive memory objects for subsequent removals, wherein preventing further includes communicating tracing information relating to the tracing to a second virtual machine at the first computer system or a second computer system; preventing memory leaks by detecting and removing dead memory objects from the memory heap, and incrementally moving remaining alive memory objects to occupy slots of the memory heap vacated by the removed dead memory objects.