OSDN Git Service

2004-03-20 Matthias Klose <doko@debian.org>
[pf3gnuchains/gcc-fork.git] / boehm-gc / doc / README.environment
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.
4
5 GC_INITIAL_HEAP_SIZE=<bytes> -  Initial heap size in bytes.  May speed up
6                                 process start-up.
7
8 GC_MAXIMUM_HEAP_SIZE=<bytes> - Maximum collected heap size.
9
10 GC_LOOP_ON_ABORT - Causes the collector abort routine to enter a tight loop.
11                    This may make it easier to debug, such a process, especially
12                    for multithreaded platforms that don't produce usable core
13                    files, or if a core file would be too large.  On some
14                    platforms, this also causes SIGSEGV to be caught and
15                    result in an infinite loop in a handler, allowing
16                    similar debugging techniques.
17
18 GC_PRINT_STATS - Turn on as much logging as is easily feasible without
19                  adding signifcant runtime overhead.  Doesn't work if
20                  the collector is built with SMALL_CONFIG.  Overridden
21                  by setting GC_quiet.  On by default if the collector
22                  was built without -DSILENT.
23
24 GC_DUMP_REGULARLY - Generate a GC debugging dump GC_dump() on startup
25                     and during every collection.  Very verbose.  Useful
26                     if you have a bug to report, but please include only the
27                     last complete dump.
28
29 GC_PRINT_ADDRESS_MAP - Linux only.  Dump /proc/self/maps, i.e. various address
30                        maps for the process, to stderr on every GC.  Useful for
31                        mapping root addresses to source for deciphering leak
32                        reports.
33
34 GC_NPROCS=<n> - Linux w/threads only.  Explicitly sets the number of processors
35                 that the GC should expect to use.  Note that setting this to 1
36                 when multiple processors are available will preserve
37                 correctness, but may lead to really horrible performance,
38                 since the lock implementation will immediately yield without
39                 first spinning.
40
41 GC_MARKERS=<n> - Linux w/threads and parallel marker only.  Set the number
42                 of marker threads.  This is normaly set to the number of
43                 processors.  It is safer to adjust GC_MARKERS than GC_NPROCS,
44                 since GC_MARKERS has no impact on the lock implementation.
45
46 GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
47                 warnings about allocations of very large blocks.
48                 Deprecated.  Use GC_LARGE_ALLOC_WARN_INTERVAL instead.
49
50 GC_LARGE_ALLOC_WARN_INTERVAL=<n> - Print every nth warning about very large
51                 block allocations, starting with the nth one.  Small values
52                 of n are generally benign, in that a bounded number of
53                 such warnings generally indicate at most a bounded leak.
54                 For best results it should be set at 1 during testing.
55                 Default is 5.  Very large numbers effectively disable the
56                 warning.
57
58 GC_IGNORE_GCJ_INFO - Ignore the type descriptors implicitly supplied by
59                      GC_gcj_malloc and friends.  This is useful for debugging
60                      descriptor generation problems, and possibly for
61                      temporarily working around such problems.  It forces a
62                      fully conservative scan of all heap objects except
63                      those known to be pointerfree, and may thus have other
64                      adverse effects.
65
66 GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects
67                      ending in a reachable one.  If this number remains
68                      bounded, then the program is "GC robust".  This ensures
69                      that a fixed number of misidentified pointers can only
70                      result in a bounded space leak.  This currently only
71                      works if debugging allocation is used throughout.
72                      It increases GC space and time requirements appreciably.
73                      This feature is still somewhat experimental, and requires
74                      that the collector have been built with MAKE_BACK_GRAPH
75                      defined.  For details, see Boehm, "Bounding Space Usage
76                      of Conservative Garbage Collectors", POPL 2001, or
77                      http://lib.hpl.hp.com/techpubs/2001/HPL-2001-251.html .
78
79 GC_RETRY_SIGNALS, GC_NO_RETRY_SIGNALS - Try to compensate for lost
80                      thread suspend signals in linux_threads.c.  On by
81                      default for GC_OSF1_THREADS, off otherwise.  Note 
82                      that this does not work around a possible loss of
83                      thread restart signals.  This seems to be necessary for
84                      some versions of Tru64.  Since we've previously seen
85                      similar issues on some other operating systems, it
86                      was turned into a runtime flag to enable last-minute
87                      work-arounds.
88
89 The following turn on runtime flags that are also program settable.  Checked
90 only during initialization.  We expect that they will usually be set through
91 other means, but this may help with debugging and testing:
92
93 GC_ENABLE_INCREMENTAL - Turn on incremental collection at startup.  Note that,
94                      depending on platform and collector configuration, this
95                      may involve write protecting pieces of the heap to
96                      track modifications.  These pieces may include pointerfree
97                      objects or not.  Although this is intended to be
98                      transparent, it may cause unintended system call failures.
99                      Use with caution.
100
101 GC_PAUSE_TIME_TARGET - Set the desired garbage collector pause time in msecs.
102                      This only has an effect if incremental collection is
103                      enabled.  If a collection requires appreciably more time
104                      than this, the client will be restarted, and the collector
105                      will need to do additional work to compensate.  The
106                      special value "999999" indicates that pause time is
107                      unlimited, and the incremental collector will behave
108                      completely like a simple generational collector.  If
109                      the collector is configured for parallel marking, and
110                      run on a multiprocessor, incremental collection should
111                      only be used with unlimited pause time.
112
113 GC_FIND_LEAK - Turns on GC_find_leak and thus leak detection.  Forces a
114                collection at program termination to detect leaks that would
115                otherwise occur after the last GC.
116
117 GC_ALL_INTERIOR_POINTERS - Turns on GC_all_interior_pointers and thus interior
118                            pointer recognition.
119
120 GC_DONT_GC - Turns off garbage collection.  Use cautiously.