Various technologies and techniques are disclosed for providing a software
transactional memory system that supports allocation and use of
finalizable objects inside transactions. By supporting such finalizable
object usage inside a software transactional memory system, correct
behavior is maintained when a garbage collector must determine when a
particular one or more of the objects are eligible for finalization. A
to-be-finalized set is provided for a transaction. An object is placed
into the to-be-finalized set for the transaction whenever a finalizable
object is allocated within the transaction. A finalize indicator is set
for each object in the to-be-finalized set at an appropriate time to
indicate that the objects are eligible for finalization. For example, if
the transaction is ready to commit and the transaction is an open
transaction, then the to-be-finalized set is traversed and a finalize
indicator is set for each object to indicate they are eligible for
finalization.