Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.BERKELEY.EDU Path: utzoo!decvax!ucbvax!RELAY.CS.NET!tjhorton%ai.toronto.edu From: tjhorton%ai.toronto.edu@RELAY.CS.NET ("Timothy J. Horton") Newsgroups: mod.ai Subject: Re: Xerox vs Symbolics -- Reference counts vs Garbage collection Message-ID: <8610071639.AA08368@ai.toronto.edu> Date: Tue, 7-Oct-86 12:39:28 EDT Article-I.D.: ai.8610071639.AA08368 Posted: Tue Oct 7 12:39:28 1986 Date-Received: Tue, 14-Oct-86 17:20:20 EDT References: <8609262352.AA10266@ai.wisc.edu> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 38 Approved: ailist@sri-stripe.arpa > When I was using MIT Lisp Machines (soon to become Symbolics) years > ago nobody used the garbage collector because it slowed down the > machine and was somewhat buggy. Instead people operated for hours/days > until they ran out of space and then rebooted the machine. The only > time I turned on the garbage collector was to compute 10000 factorial. > Do current Symbolics users use the garbage collector? > > "However, it is apparent that reference counters will never > reclaim circular list structure." > > This is a common complaint about reference counters. However I don't > believe there is very many circular data structures in real Lisp code. > Has anyone looked into this? Has any Xerox user run out of space > because of circular data structures in their environment? > > -- > David Neves, Computer Sciences Department, University of Wisconsin-Madison > Usenet: {allegra,heurikon,ihnp4,seismo}!uwvax!neves > Arpanet: neves@rsch.wisc.edu In the Xerox environment at least, the extensive use of windows is one of the most common sources of problems. Often is the case that a window must be 'related' somehow to another window i.e. you create a subsidiary window for some main window (as a scroll window is to a display window), and the two windows must 'know' about each other. The obvious thing is to put pointers on each window's property list to the other window, "et viola" a circular list. Everything on the property lists of the two windows also gets kept around, and since Xerox windows are such good places to store things the circular structure is often very large. (check out the stuff on a 'Sketch' window's property list) A careful programmer can avoid such problems. In the case of windows, one just has to be careful about how windows find out about one another (some kind of global variable scheme or a directed search of all windows). Yet accidents happen and windows can kill the environment fairly quickly. Yes, I have lost an environment to just this problem (that's why I know), and it's very hard to tell what happened after the fact.