Full garbage collection throughtout the system.

Scott A Crosby crosby at qwes.math.cmu.edu
Wed Dec 12 05:49:08 UTC 2001


I've been going through the system looking at the instances of garbage
collection, as fullGC is very expensive. Ideally, we will never run a
fullGC unless we are genuinely running out of memory.

I've found the following:

	BlockContext>>repeatWithGCIf:
		-- Used by Socket operations
	Object>>retryWithGC:until:
		-- Used by FileDirectory file operations.

which are basically the same thing. I'll map both of them into one
function. By what name shall I call it, and in what class will it reside?

Also, is there any way I can remove invocations of these in the Socket
code or in StandardFileStream>>open:forWrite:? (To me, these are very
important. This GC is signifigant in the overhead when building a new VM.)

--

Other garbage-collecion invokers:
   SampledInstrument seems to invoke the garbage collector during
instance-creation for the purposes of computing memory usage during
loading of samples (which is unused except for purposes of printing onto
the transcript). Shall I nuke this code?

   MailInboxFile invokes the garbage collector once or twice, both
directly, and through 'Smalltalk bytesLeft'. This is fairly expensive,
but easy to clean up.

--

The only signifigant internal cause of fullGC is root table overflow,
which should soon cease being a problem.

--

Scott



--
No DVD movie will ever enter the public domain, nor will any CD. The last CD
and the last DVD will have moldered away decades before they leave copyright.
This is not encouraging the creation of knowledge in the public domain.





More information about the Squeak-dev mailing list