Large array slows down Squeak
mparker at CaseServices.com
Thu Jun 1 21:33:01 UTC 2000
> => 6/1/00 4:54:04 PM EDT, mparker at CaseServices.com =>
> << The memory system reserves 4000 words at the end of eden >>
> What is 'eden'?
Sorry. Generational collectors generally segregate objects into
two different areas of memory. All new objects are created in a
special area, commonly called either "newspace" or "eden", that
is the focus of ordinary (minor) collections. If they survive
long enough they get moved into another area commonly called
"oldspace", that is collected much more infrequently (like only
at midnight, shutdown, or some other time when collection overhead
isn't too noticeable). Which objects get promoted to oldspace
(or "tenured") is determined by the tenuring policy. Some
collectors have multiple oldspaces and unintelligent tenuring
policies (Lisp machines and the Tektronix Smalltalk systems had
five to seven). Most modern collectors seem to use only two,
but have much more sophisticated tenuring (and detenuring) policies
than early generational collectors.
Squeak uses only two spaces that are contiguous with each other,
so that the end of oldspace is the start of eden. After each minor
collection, all objects are packed into the front of eden, which
is in turn butted against the end of oldspace. In the current
collector all of eden is tenured at once by the simple expedient
of moving the "start-of-eden" pointer to the freemem ptr (i.e.
the end of eden ptr), and clearing out the rootlist.
More information about the Squeak-dev