Patent ID: 8397045

Claim:
A memory management device including a plurality of processors implementing transactional memory, the memory management device comprising: a memory having a plurality of local areas corresponding respectively to a plurality of running threads; a write barrier processing unit, operative in response to initiation of an operation by one of the threads to: write a pointer into a shared object having an attribute of “shared,” find any object that is reachable by recursively tracing references, starting at an object pointed to by the pointer to be written, and change an attribute of the found object to “shared” so as to make it a shared object, and on the condition that any one of the shared objects including the shared object into which the pointer is to be written is located outside of the local area corresponding to the thread and has a pointer pointing to an object located in the local area, to register the pointer in the shared object satisfying the condition in a write log of the transactional memory so as to set the same as a target of conflict detection, and also register the shared object satisfying the condition in a copy list for the thread; and a garbage collector, operative in response to exhaustion of one of the plurality of local areas, to: in the case where no conflict is detected in relation to the thread to which the exhausted local area has been assigned, copy any object reachable from any one of the shared objects registered in the copy list for the thread to the outside of the exhausted local area, and, for each shared object registered in the copy list, buffer write data for modifying the pointer to the copied object so as to point to a new copy of the object and register the same in the write log of the transactional memory, commit a transaction, and collect any unwanted object irrespective of its attribute, and in the case where a conflict is detected in relation to the thread to which the exhausted local area has been assigned, collect from the local area any unwanted object having an attribute other than “shared.”