Database Management for Smalltalk

Garbage Collection

Concurrent Garbage Collection

 
As with real objects in the image, unreachable virtual objects are removed by a garbage-collector. 

The garbage-collector is unobtrusive, spreading its work over time, with optional visual progress indication, at a rate user-defined for each connection, so avoiding lengthy down-time with all users logged-off for batch garbage-collection.  However to maximize transaction throughput, that option is also available simply by setting the rate to zero.

The garbage-collector may be run for a specified number of objects in the foreground once for each transaction commit, which makes the commit seem to take longer, and/or continuously in the background thus utilizing time when users are in the data-entry phases of transactions.  Since the garbage-collection rates are set individually for each connected image the load may be distributed as required, for example an otherwise little-used image/processor could be set to do most of the garbage-collection.