468663ddbb
Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
186 lines
10 KiB
Plaintext
186 lines
10 KiB
Plaintext
The garbage collector looks at a number of environment variables which are,
|
|
then, used to affect its operation.
|
|
|
|
GC_INITIAL_HEAP_SIZE=<bytes> - Initial heap size in bytes. May speed up
|
|
process start-up. Optionally, may be
|
|
specified with a multiplier ('k', 'M' or 'G')
|
|
suffix.
|
|
|
|
GC_MAXIMUM_HEAP_SIZE=<bytes> - Maximum collected heap size. Allows
|
|
a multiplier suffix.
|
|
|
|
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 multi-threaded 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 GC logging. Not functional with SMALL_CONFIG.
|
|
|
|
GC_LOG_FILE - The name of the log file. Stderr by default. Not functional
|
|
with SMALL_CONFIG.
|
|
|
|
GC_ONLY_LOG_TO_FILE - Turns off redirection of GC stdout and stderr to the log
|
|
file specified by GC_LOG_FILE. Has no effect unless
|
|
GC_LOG_FILE is set. Not functional with SMALL_CONFIG.
|
|
|
|
GC_PRINT_VERBOSE_STATS - Turn on even more logging. Not functional with
|
|
SMALL_CONFIG.
|
|
|
|
GC_DUMP_REGULARLY - Generate a GC debugging dump GC_dump() on startup
|
|
and during every collection. Very verbose. Useful
|
|
if you have a bug to report, but please include only the
|
|
last complete dump.
|
|
|
|
GC_COLLECT_AT_MALLOC=<n> - Override the default value specified by
|
|
GC_COLLECT_AT_MALLOC macro. Has no effect unless
|
|
GC is built with GC_COLLECT_AT_MALLOC defined.
|
|
|
|
GC_BACKTRACES=<n> - Generate n random back-traces (for heap profiling) after
|
|
each GC. Collector must have been built with
|
|
KEEP_BACK_PTRS. This won't generate useful output unless
|
|
most objects in the heap were allocated through debug
|
|
allocators. This is intended to be only a statistical
|
|
sample; individual traces may be erroneous due to
|
|
concurrent heap mutation.
|
|
|
|
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,
|
|
since the lock implementation will immediately yield without
|
|
first spinning.
|
|
|
|
GC_MARKERS=<n> - Only if compiled with PARALLEL_MARK. Set the number
|
|
of marker threads. This is normally set to the number of
|
|
processors. It is safer to adjust GC_MARKERS than GC_NPROCS,
|
|
since GC_MARKERS has no impact on the lock implementation.
|
|
|
|
GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
|
|
warnings about allocations of very large blocks.
|
|
Deprecated. Use GC_LARGE_ALLOC_WARN_INTERVAL instead.
|
|
|
|
GC_LARGE_ALLOC_WARN_INTERVAL=<n> - Print every nth warning about very large
|
|
block allocations, starting with the nth one. Small values
|
|
of n are generally benign, in that a bounded number of
|
|
such warnings generally indicate at most a bounded leak.
|
|
For best results it should be set at 1 during testing.
|
|
Default is 5. Very large numbers effectively disable the
|
|
warning.
|
|
|
|
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 pointer-free, 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
|
|
(http://www.hpl.hp.com/techreports/2001/HPL-2001-251.html).
|
|
|
|
GC_RETRY_SIGNALS - Try to compensate for lost
|
|
thread suspend and restart signals (Pthreads only).
|
|
On by default for OSF1 (Tru64) or if the library is
|
|
sanitized, off otherwise. Since we've previously seen
|
|
similar issues on some other operating systems, it
|
|
was turned into a runtime flag to enable last-minute
|
|
work-arounds. "0" value means "do not retry signals".
|
|
|
|
GC_USE_GETWRITEWATCH=<n> - Only if MPROTECT_VDB and GWW_VDB are both defined
|
|
(Win32 only). Explicitly specify which strategy of
|
|
keeping track of dirtied pages should be used.
|
|
If n=0 then GetWriteWatch() is not used (falling back to
|
|
protecting pages and catching memory faults strategy)
|
|
else the collector tries to use GetWriteWatch-based
|
|
strategy (GWW_VDB) first if available.
|
|
|
|
GC_DISABLE_INCREMENTAL - Ignore runtime requests to enable incremental GC.
|
|
Useful for debugging.
|
|
|
|
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_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
|
|
pointer-free 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.
|
|
|
|
GC_FULL_FREQUENCY - Set the desired number of partial collections between full
|
|
collections. Matters only if GC_incremental is set.
|
|
Not functional with SMALL_CONFIG.
|
|
|
|
GC_FREE_SPACE_DIVISOR - Set GC_free_space_divisor to the indicated value.
|
|
Setting it to larger values decreases space consumption
|
|
and increases GC frequency.
|
|
|
|
GC_UNMAP_THRESHOLD - Set the desired memory blocks unmapping threshold (the
|
|
number of sequential garbage collections for which
|
|
a candidate block for unmapping should remain free). The
|
|
special value "0" completely disables unmapping.
|
|
|
|
GC_FORCE_UNMAP_ON_GCOLLECT - Turn "unmap as much as possible on explicit GC"
|
|
mode on (overrides the default value). Has no effect on
|
|
implicitly-initiated garbage collections. Has no effect if
|
|
memory unmapping is disabled (or not compiled in) or if the
|
|
unmapping threshold is 1.
|
|
|
|
GC_FIND_LEAK - Turns on GC_find_leak and thus leak detection. Forces a
|
|
collection at program termination to detect leaks that would
|
|
otherwise occur after the last GC.
|
|
|
|
GC_FINDLEAK_DELAY_FREE - Turns on deferred freeing of objects in the
|
|
leak-finding mode (see the corresponding macro
|
|
description for more information).
|
|
|
|
GC_ABORT_ON_LEAK - Causes the application to be terminated once leaked or
|
|
smashed objects are found.
|
|
|
|
GC_ALL_INTERIOR_POINTERS - Turns on GC_all_interior_pointers and thus interior
|
|
pointer recognition.
|
|
|
|
GC_DONT_GC - Turns off garbage collection. Use cautiously.
|
|
|
|
GC_USE_ENTIRE_HEAP - Set desired GC_use_entire_heap value at start-up. See
|
|
the similar macro description in README.macros.
|
|
|
|
GC_TRACE=addr - Intended for collector debugging. Requires that the collector
|
|
have been built with ENABLE_TRACE defined. Causes the debugger
|
|
to log information about the tracing of address ranges
|
|
containing addr. Typically addr is the address that contains
|
|
a pointer to an object that mysteriously failed to get marked.
|
|
Addr must be specified as a hexadecimal integer.
|