2001-05-21 14:39:23 +08:00
|
|
|
The garbage collector looks at a number of environment variables which are
|
2002-02-12 12:37:57 +08:00
|
|
|
then used to affect its operation. These are examined only on Un*x-like
|
2001-05-21 14:39:23 +08:00
|
|
|
platforms.
|
|
|
|
|
|
|
|
GC_INITIAL_HEAP_SIZE=<bytes> - Initial heap size in bytes. May speed up
|
|
|
|
process start-up.
|
|
|
|
|
|
|
|
GC_LOOP_ON_ABORT - Causes the collector abort routine to enter a tight loop.
|
|
|
|
This may make it easier to debug, such a process, especially
|
|
|
|
for multithreaded platforms that don't produce usable core
|
|
|
|
files, or if a core file would be too large. On some
|
|
|
|
platforms, this also causes SIGSEGV to be caught and
|
|
|
|
result in an infinite loop in a handler, allowing
|
|
|
|
similar debugging techniques.
|
|
|
|
|
|
|
|
GC_PRINT_STATS - Turn on as much logging as is easily feasible without
|
|
|
|
adding signifcant runtime overhead. Doesn't work if
|
|
|
|
the collector is built with SMALL_CONFIG. Overridden
|
|
|
|
by setting GC_quiet. On by default if the collector
|
|
|
|
was built without -DSILENT.
|
|
|
|
|
|
|
|
GC_PRINT_ADDRESS_MAP - Linux only. Dump /proc/self/maps, i.e. various address
|
|
|
|
maps for the process, to stderr on every GC. Useful for
|
|
|
|
mapping root addresses to source for deciphering leak
|
|
|
|
reports.
|
|
|
|
|
|
|
|
GC_NPROCS=<n> - Linux w/threads only. Explicitly sets the number of processors
|
|
|
|
that the GC should expect to use. Note that setting this to 1
|
|
|
|
when multiple processors are available will preserve
|
|
|
|
correctness, but may lead to really horrible performance.
|
|
|
|
|
2001-08-18 09:04:43 +08:00
|
|
|
GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
|
|
|
|
"Needed to allocate blacklisted block at ..." warnings.
|
|
|
|
|
2002-02-12 12:37:57 +08:00
|
|
|
GC_IGNORE_GCJ_INFO - Ignore the type descriptors implicitly supplied by
|
|
|
|
GC_gcj_malloc and friends. This is useful for debugging
|
|
|
|
descriptor generation problems, and possibly for
|
|
|
|
temporarily working around such problems. It forces a
|
|
|
|
fully conservative scan of all heap objects except
|
|
|
|
those known to be pointerfree, and may thus have other
|
|
|
|
adverse effects.
|
|
|
|
|
|
|
|
GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects
|
|
|
|
ending in a reachable one. If this number remains
|
|
|
|
bounded, then the program is "GC robust". This ensures
|
|
|
|
that a fixed number of misidentified pointers can only
|
|
|
|
result in a bounded space leak. This currently only
|
|
|
|
works if debugging allocation is used throughout.
|
|
|
|
It increases GC space and time requirements appreciably.
|
|
|
|
This feature is still somewhat experimental, and requires
|
|
|
|
that the collector have been built with MAKE_BACK_GRAPH
|
|
|
|
defined. For details, see Boehm, "Bounding Space Usage
|
|
|
|
of Conservative Garbage Collectors", POPL 2001, or
|
|
|
|
http://lib.hpl.hp.com/techpubs/2001/HPL-2001-251.html .
|
|
|
|
|
|
|
|
GC_ENABLE_INCREMENTAL - Turn on incremental collection at startup. Note that,
|
|
|
|
depending on platform and collector configuration, this
|
|
|
|
may involve write protecting pieces of the heap to
|
|
|
|
track modifications. These pieces may include pointerfree
|
|
|
|
objects or not. Although this is intended to be
|
|
|
|
transparent, it may cause unintended system call failures.
|
|
|
|
Use with caution.
|
|
|
|
|
|
|
|
GC_PAUSE_TIME_TARGET - Set the desired garbage collector pause time in msecs.
|
|
|
|
This only has an effect if incremental collection is enabled.
|
|
|
|
If a collection requires appreciably more time than this,
|
|
|
|
the client will be restarted, and the collector will need
|
|
|
|
to do additional work to compensate. The special value
|
|
|
|
"999999" indicates that pause time is unlimited, and the
|
|
|
|
incremental collector will behave completely like a
|
|
|
|
simple generational collector. If the collector is
|
|
|
|
configured for parallel marking, and run on a multiprocessor,
|
|
|
|
incremental collection should only be used with unlimited
|
|
|
|
pause time.
|
|
|
|
|
2001-05-21 14:39:23 +08:00
|
|
|
The following turn on runtime flags that are also program settable. Checked
|
|
|
|
only during initialization. We expect that they will usually be set through
|
|
|
|
other means, but this may help with debugging and testing:
|
|
|
|
|
|
|
|
GC_FIND_LEAK - Turns on GC_find_leak and thus leak detection.
|
|
|
|
|
|
|
|
GC_ALL_INTERIOR_POINTERS - Turns on GC_all_interior_pointers and thus interior
|
|
|
|
pointer recognition.
|
|
|
|
|
|
|
|
GC_DONT_GC - Turns off garbage collection. Use cautiously.
|