HELP SYSGARBAGE                                     Steve Hardy Mar 1982
                                               Updated A.Sloman Apr 1989
                                         Updated: Adrian Howard Mar 1992

    sysgarbage();

This procedure causes a garbage collection (GC). Normally garbage
collections are invoked by the store manager when an attempt is made to
create a new structure (or compile a procedure) and there is not enough
free space at the end of the heap. The procedure -sysgarbage- is useful
if you wish to ensure that as much space is available as possible before
a particular program starts running.

For a tutorial explanation of what garbage collection is see TEACH *GC.

There are two kinds of garbage collectors provided in POPLOG, a copying
version (the default on most machines) which is usually faster if you
have lots of memory available, and a non-copying version which is
automatically invoked if no space is available for the copying. The type
of garbage collector used is controlled by the variable -pop_gc_copy-
(see REF *POP_GC_COPY for details.)

The user definable procedure -pop_after_gc- (default -identfn-) is run
after every garbage collection.

It is also possible for the user to specify "destroy actions" which get
executed when a data-structure is about to become garbage collected. See
the section 'Destroy Properties' in REF *PROPS for details.

For full information about store management and mechanisms for
controlling it see the section titled 'Store Management' in REF *SYSTEM.

Also see:

    *POPGCTRACE    --- Tracing GCs
    *POPGCTIME     --- Getting the time spent garbage collecting
    *POPGCRATIO    --- Controlling when garbage collection occurs
    *EFFICIENCY    --- General advice on efficiency
    *POPMEMLIM     --- On setting the maximum memory size
    *POPMEMUSED    --- The memory used at the last GC
    *SYS_LOCK_HEAP --- How to "lock" the heap to reduce GC times


--- C.all/help/sysgarbage
--- Copyright University of Sussex 1992. All rights reserved. ----------
