Patent ID: 7386854

Claim:
A method of running one or more programs on a computer system including a memory in which objects are stored, said method comprising the steps of: providing a card table containing multiple cards, each card corresponding to a portion of said memory; and detecting with a write barrier that a first object has been updated by a program to include a reference to a second object, and marking the card that corresponds to the memory location of said second object, wherein the card table is adapted to enable a Java Virtual Machine to begin a second application after a first application has run to completion by resetting the Java Virtual Machine without restarting the Java Virtual Machine and without performing garbage collection; wherein said memory is divided into at least first and second heaps; wherein each card comprises first and second components, the first component being marked if an object in a corresponding memory location is updated to include a reference to another object, and the second component being marked if and object in a corresponding memory location is referenced from another object; wherein the method further includes performing a reset including: marking the second component of each card corresponding to a memory location referenced by the system stack or registers; detecting if the first component of any card corresponding to objects in the first heap is marked; responsive to so detecting, for determining if the second component of any such card is marked; and responsive to determining that no cards have both the first and second components marked, proceeding with the reset.