2003-04-02 Aldy Hernandez <aldyh@redhat.com>
[official-gcc.git] / boehm-gc / doc / README.environment
blobc7daddb0acabf315e9d44c31c8afc99e2477fb54
1 The garbage collector looks at a number of environment variables which are
2 then used to affect its operation.  These are examined only on Un*x-like
3 platforms.
5 GC_INITIAL_HEAP_SIZE=<bytes> -  Initial heap size in bytes.  May speed up
6                                 process start-up.
8 GC_LOOP_ON_ABORT - Causes the collector abort routine to enter a tight loop.
9                    This may make it easier to debug, such a process, especially
10                    for multithreaded platforms that don't produce usable core
11                    files, or if a core file would be too large.  On some
12                    platforms, this also causes SIGSEGV to be caught and
13                    result in an infinite loop in a handler, allowing
14                    similar debugging techniques.
16 GC_PRINT_STATS - Turn on as much logging as is easily feasible without
17                  adding signifcant runtime overhead.  Doesn't work if
18                  the collector is built with SMALL_CONFIG.  Overridden
19                  by setting GC_quiet.  On by default if the collector
20                  was built without -DSILENT.
22 GC_PRINT_ADDRESS_MAP - Linux only.  Dump /proc/self/maps, i.e. various address
23                        maps for the process, to stderr on every GC.  Useful for
24                        mapping root addresses to source for deciphering leak
25                        reports.
27 GC_NPROCS=<n> - Linux w/threads only.  Explicitly sets the number of processors
28                 that the GC should expect to use.  Note that setting this to 1
29                 when multiple processors are available will preserve
30                 correctness, but may lead to really horrible performance.
32 GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
33                 warnings about allocations of very large blocks.
34                 Deprecated.  Use GC_LARGE_ALLOC_WARN_INTERVAL instead.
36 GC_LARGE_ALLOC_WARN_INTERVAL=<n> - Print every nth warning about very large
37                 block allocations, starting with the nth one.  Small values
38                 of n are generally benign, in that a bounded number of
39                 such warnings generally indicate at most a bounded leak.
40                 For best results it should be set at 1 during testing.
41                 Default is 5.  Very large numbers effectively disable the
42                 warning.
44 GC_IGNORE_GCJ_INFO - Ignore the type descriptors implicitly supplied by
45                      GC_gcj_malloc and friends.  This is useful for debugging
46                      descriptor generation problems, and possibly for
47                      temporarily working around such problems.  It forces a
48                      fully conservative scan of all heap objects except
49                      those known to be pointerfree, and may thus have other
50                      adverse effects.
52 GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects
53                      ending in a reachable one.  If this number remains
54                      bounded, then the program is "GC robust".  This ensures
55                      that a fixed number of misidentified pointers can only
56                      result in a bounded space leak.  This currently only
57                      works if debugging allocation is used throughout.
58                      It increases GC space and time requirements appreciably.
59                      This feature is still somewhat experimental, and requires
60                      that the collector have been built with MAKE_BACK_GRAPH
61                      defined.  For details, see Boehm, "Bounding Space Usage
62                      of Conservative Garbage Collectors", POPL 2001, or
63                      http://lib.hpl.hp.com/techpubs/2001/HPL-2001-251.html .
65 GC_ENABLE_INCREMENTAL - Turn on incremental collection at startup.  Note that,
66                      depending on platform and collector configuration, this
67                      may involve write protecting pieces of the heap to
68                      track modifications.  These pieces may include pointerfree
69                      objects or not.  Although this is intended to be
70                      transparent, it may cause unintended system call failures.
71                      Use with caution.
73 GC_PAUSE_TIME_TARGET - Set the desired garbage collector pause time in msecs.
74                      This only has an effect if incremental collection is enabled.
75                      If a collection requires appreciably more time than this,
76                      the client will be restarted, and the collector will need
77                      to do additional work to compensate.  The special value
78                      "999999" indicates that pause time is unlimited, and the
79                      incremental collector will behave completely like a
80                      simple generational collector.  If the collector is
81                      configured for parallel marking, and run on a multiprocessor,
82                      incremental collection should only be used with unlimited
83                      pause time.
85 The following turn on runtime flags that are also program settable.  Checked
86 only during initialization.  We expect that they will usually be set through
87 other means, but this may help with debugging and testing:
89 GC_FIND_LEAK - Turns on GC_find_leak and thus leak detection.
91 GC_ALL_INTERIOR_POINTERS - Turns on GC_all_interior_pointers and thus interior
92                            pointer recognition.
94 GC_DONT_GC - Turns off garbage collection.  Use cautiously.