Why does Ice not use distributed garbage collection?
A recurring theme in distributed computing is how to deal with resources that a server allocates on behalf of a client. A typical example is a shopping cart that is implemented in the server: the server creates the shopping cart for the client, and the client gradually fills the cart with items. Eventually, the client is expected to either purchase the items in the shopping cart or to cancel the entire process; either action allows the server to destroy the shopping cart again, thereby reclaiming its associated resources. Of course, the problem with this design is what to do if the client neither completes the purchase nor cancels it. Unless the server takes explicit action to deal with this scenario, it will hang onto the shopping cart forever and, once enough clients have failed to complete their purchasing process, will eventually run out of memory or other resources. This particular problem is well known in distributed computing and has a well-known solution: use a session concept