1. A computer-implemented method for determining a usefulness of synchronization objects comprising: in a multi-threaded application program, tracking threads as they are created and terminated; intercepting application program interfaces (APIs) used to create and destroy thread synchronization objects; in the API wrappers, tracking existing synchronization objects in a list; and associating a list entry for each of the synchronization objects with a unique bit in a bit field.