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
5
GC_INITIAL_HEAP_SIZE=<bytes> - Initial heap size in bytes. May speed up
8
GC_MAXIMUM_HEAP_SIZE=<bytes> - Maximum collected heap size.
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.
18
GC_PRINT_STATS - Turn on GC logging. Not functional with -DSMALL_CONFIG.
20
GC_LOG_FILE - The name of the log file. Stderr by default.
22
GC_PRINT_VERBOSE_STATS - Turn on even more logging.
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
29
GC_BACKTRACES=<n> - Generate n random backtraces (for heap profiling) after
30
each GC. Collector must have been built with
31
KEEP_BACK_PTRS. This won't generate useful output unless
32
most objects in the heap were allocated through debug
33
allocators. This is intended to be only a statistical
34
sample; individual traces may be erroneous due to
35
concurrent heap mutation.
37
GC_PRINT_ADDRESS_MAP - Linux only. Dump /proc/self/maps, i.e. various address
38
maps for the process, to stderr on every GC. Useful for
39
mapping root addresses to source for deciphering leak
42
GC_NPROCS=<n> - Linux w/threads only. Explicitly sets the number of processors
43
that the GC should expect to use. Note that setting this to 1
44
when multiple processors are available will preserve
45
correctness, but may lead to really horrible performance,
46
since the lock implementation will immediately yield without
49
GC_MARKERS=<n> - Linux w/threads and parallel marker only. Set the number
50
of marker threads. This is normally set to the number of
51
processors. It is safer to adjust GC_MARKERS than GC_NPROCS,
52
since GC_MARKERS has no impact on the lock implementation.
54
GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
55
warnings about allocations of very large blocks.
56
Deprecated. Use GC_LARGE_ALLOC_WARN_INTERVAL instead.
58
GC_LARGE_ALLOC_WARN_INTERVAL=<n> - Print every nth warning about very large
59
block allocations, starting with the nth one. Small values
60
of n are generally benign, in that a bounded number of
61
such warnings generally indicate at most a bounded leak.
62
For best results it should be set at 1 during testing.
63
Default is 5. Very large numbers effectively disable the
66
GC_IGNORE_GCJ_INFO - Ignore the type descriptors implicitly supplied by
67
GC_gcj_malloc and friends. This is useful for debugging
68
descriptor generation problems, and possibly for
69
temporarily working around such problems. It forces a
70
fully conservative scan of all heap objects except
71
those known to be pointerfree, and may thus have other
74
GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects
75
ending in a reachable one. If this number remains
76
bounded, then the program is "GC robust". This ensures
77
that a fixed number of misidentified pointers can only
78
result in a bounded space leak. This currently only
79
works if debugging allocation is used throughout.
80
It increases GC space and time requirements appreciably.
81
This feature is still somewhat experimental, and requires
82
that the collector have been built with MAKE_BACK_GRAPH
83
defined. For details, see Boehm, "Bounding Space Usage
84
of Conservative Garbage Collectors", POPL 2001, or
85
http://lib.hpl.hp.com/techpubs/2001/HPL-2001-251.html .
87
GC_RETRY_SIGNALS, GC_NO_RETRY_SIGNALS - Try to compensate for lost
88
thread suspend signals in linux_threads.c. On by
89
default for GC_OSF1_THREADS, off otherwise. Note
90
that this does not work around a possible loss of
91
thread restart signals. This seems to be necessary for
92
some versions of Tru64. Since we've previously seen
93
similar issues on some other operating systems, it
94
was turned into a runtime flag to enable last-minute
97
The following turn on runtime flags that are also program settable. Checked
98
only during initialization. We expect that they will usually be set through
99
other means, but this may help with debugging and testing:
101
GC_ENABLE_INCREMENTAL - Turn on incremental collection at startup. Note that,
102
depending on platform and collector configuration, this
103
may involve write protecting pieces of the heap to
104
track modifications. These pieces may include pointerfree
105
objects or not. Although this is intended to be
106
transparent, it may cause unintended system call failures.
109
GC_PAUSE_TIME_TARGET - Set the desired garbage collector pause time in msecs.
110
This only has an effect if incremental collection is
111
enabled. If a collection requires appreciably more time
112
than this, the client will be restarted, and the collector
113
will need to do additional work to compensate. The
114
special value "999999" indicates that pause time is
115
unlimited, and the incremental collector will behave
116
completely like a simple generational collector. If
117
the collector is configured for parallel marking, and
118
run on a multiprocessor, incremental collection should
119
only be used with unlimited pause time.
121
GC_FIND_LEAK - Turns on GC_find_leak and thus leak detection. Forces a
122
collection at program termination to detect leaks that would
123
otherwise occur after the last GC.
125
GC_ALL_INTERIOR_POINTERS - Turns on GC_all_interior_pointers and thus interior
128
GC_DONT_GC - Turns off garbage collection. Use cautiously.
130
GC_TRACE=addr - Intended for collector debugging. Requires that the collector
131
have been built with ENABLE_TRACE defined. Causes the debugger
132
to log information about the tracing of address ranges containing
133
addr. Typically addr is the address that contains a pointer to
134
an object that mysteriously failed to get marked. Addr must be
135
specified as a hexadecimal integer.