123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- 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 or SOFT_VDB) are
- both defined (Win32 and Linux only). Explicitly specify
- which strategy of keeping track of dirtied pages should
- be used. If n=0, then fall back to protecting pages and
- catching memory faults strategy), else the collector
- tries to use GetWriteWatch-based strategy (GWW_VDB) or
- soft-dirty bits strategy (SOFT_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
- milliseconds (ms). 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. Any value, except for the given
- special one, disables parallel marker (almost fully) for
- now.
- 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 threshold of memory blocks unmapping
- (the number of sequential garbage collections during those
- a candidate block for unmapping should be marked as 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.
|