1 | \section{\module{gc} ---
|
---|
2 | Garbage Collector interface}
|
---|
3 |
|
---|
4 | \declaremodule{extension}{gc}
|
---|
5 | \modulesynopsis{Interface to the cycle-detecting garbage collector.}
|
---|
6 | \moduleauthor{Neil Schemenauer}{nas@arctrix.com}
|
---|
7 | \sectionauthor{Neil Schemenauer}{nas@arctrix.com}
|
---|
8 |
|
---|
9 | This module provides an interface to the optional garbage collector. It
|
---|
10 | provides the ability to disable the collector, tune the collection
|
---|
11 | frequency, and set debugging options. It also provides access to
|
---|
12 | unreachable objects that the collector found but cannot free. Since the
|
---|
13 | collector supplements the reference counting already used in Python, you
|
---|
14 | can disable the collector if you are sure your program does not create
|
---|
15 | reference cycles. Automatic collection can be disabled by calling
|
---|
16 | \code{gc.disable()}. To debug a leaking program call
|
---|
17 | \code{gc.set_debug(gc.DEBUG_LEAK)}. Notice that this includes
|
---|
18 | \code{gc.DEBUG_SAVEALL}, causing garbage-collected objects to be
|
---|
19 | saved in gc.garbage for inspection.
|
---|
20 |
|
---|
21 | The \module{gc} module provides the following functions:
|
---|
22 |
|
---|
23 | \begin{funcdesc}{enable}{}
|
---|
24 | Enable automatic garbage collection.
|
---|
25 | \end{funcdesc}
|
---|
26 |
|
---|
27 | \begin{funcdesc}{disable}{}
|
---|
28 | Disable automatic garbage collection.
|
---|
29 | \end{funcdesc}
|
---|
30 |
|
---|
31 | \begin{funcdesc}{isenabled}{}
|
---|
32 | Returns true if automatic collection is enabled.
|
---|
33 | \end{funcdesc}
|
---|
34 |
|
---|
35 | \begin{funcdesc}{collect}{\optional{generation}}
|
---|
36 | With no arguments, run a full collection. The optional argument
|
---|
37 | \var{generation} may be an integer specifying which generation to collect
|
---|
38 | (from 0 to 2). A \exception{ValueError} is raised if the generation number
|
---|
39 | is invalid.
|
---|
40 | The number of unreachable objects found is returned.
|
---|
41 |
|
---|
42 | \versionchanged[The optional \var{generation} argument was added]{2.5}
|
---|
43 | \end{funcdesc}
|
---|
44 |
|
---|
45 | \begin{funcdesc}{set_debug}{flags}
|
---|
46 | Set the garbage collection debugging flags.
|
---|
47 | Debugging information will be written to \code{sys.stderr}. See below
|
---|
48 | for a list of debugging flags which can be combined using bit
|
---|
49 | operations to control debugging.
|
---|
50 | \end{funcdesc}
|
---|
51 |
|
---|
52 | \begin{funcdesc}{get_debug}{}
|
---|
53 | Return the debugging flags currently set.
|
---|
54 | \end{funcdesc}
|
---|
55 |
|
---|
56 | \begin{funcdesc}{get_objects}{}
|
---|
57 | Returns a list of all objects tracked by the collector, excluding the
|
---|
58 | list returned.
|
---|
59 | \versionadded{2.2}
|
---|
60 | \end{funcdesc}
|
---|
61 |
|
---|
62 | \begin{funcdesc}{set_threshold}{threshold0\optional{,
|
---|
63 | threshold1\optional{, threshold2}}}
|
---|
64 | Set the garbage collection thresholds (the collection frequency).
|
---|
65 | Setting \var{threshold0} to zero disables collection.
|
---|
66 |
|
---|
67 | The GC classifies objects into three generations depending on how many
|
---|
68 | collection sweeps they have survived. New objects are placed in the
|
---|
69 | youngest generation (generation \code{0}). If an object survives a
|
---|
70 | collection it is moved into the next older generation. Since
|
---|
71 | generation \code{2} is the oldest generation, objects in that
|
---|
72 | generation remain there after a collection. In order to decide when
|
---|
73 | to run, the collector keeps track of the number object allocations and
|
---|
74 | deallocations since the last collection. When the number of
|
---|
75 | allocations minus the number of deallocations exceeds
|
---|
76 | \var{threshold0}, collection starts. Initially only generation
|
---|
77 | \code{0} is examined. If generation \code{0} has been examined more
|
---|
78 | than \var{threshold1} times since generation \code{1} has been
|
---|
79 | examined, then generation \code{1} is examined as well. Similarly,
|
---|
80 | \var{threshold2} controls the number of collections of generation
|
---|
81 | \code{1} before collecting generation \code{2}.
|
---|
82 | \end{funcdesc}
|
---|
83 |
|
---|
84 | \begin{funcdesc}{get_count}{}
|
---|
85 | Return the current collection counts as a tuple of
|
---|
86 | \code{(\var{count0}, \var{count1}, \var{count2})}.
|
---|
87 | \versionadded{2.5}
|
---|
88 | \end{funcdesc}
|
---|
89 |
|
---|
90 | \begin{funcdesc}{get_threshold}{}
|
---|
91 | Return the current collection thresholds as a tuple of
|
---|
92 | \code{(\var{threshold0}, \var{threshold1}, \var{threshold2})}.
|
---|
93 | \end{funcdesc}
|
---|
94 |
|
---|
95 | \begin{funcdesc}{get_referrers}{*objs}
|
---|
96 | Return the list of objects that directly refer to any of objs. This
|
---|
97 | function will only locate those containers which support garbage
|
---|
98 | collection; extension types which do refer to other objects but do not
|
---|
99 | support garbage collection will not be found.
|
---|
100 |
|
---|
101 | Note that objects which have already been dereferenced, but which live
|
---|
102 | in cycles and have not yet been collected by the garbage collector can
|
---|
103 | be listed among the resulting referrers. To get only currently live
|
---|
104 | objects, call \function{collect()} before calling
|
---|
105 | \function{get_referrers()}.
|
---|
106 |
|
---|
107 | Care must be taken when using objects returned by
|
---|
108 | \function{get_referrers()} because some of them could still be under
|
---|
109 | construction and hence in a temporarily invalid state. Avoid using
|
---|
110 | \function{get_referrers()} for any purpose other than debugging.
|
---|
111 |
|
---|
112 | \versionadded{2.2}
|
---|
113 | \end{funcdesc}
|
---|
114 |
|
---|
115 | \begin{funcdesc}{get_referents}{*objs}
|
---|
116 | Return a list of objects directly referred to by any of the arguments.
|
---|
117 | The referents returned are those objects visited by the arguments'
|
---|
118 | C-level \member{tp_traverse} methods (if any), and may not be all
|
---|
119 | objects actually directly reachable. \member{tp_traverse} methods
|
---|
120 | are supported only by objects that support garbage collection, and are
|
---|
121 | only required to visit objects that may be involved in a cycle. So,
|
---|
122 | for example, if an integer is directly reachable from an argument, that
|
---|
123 | integer object may or may not appear in the result list.
|
---|
124 |
|
---|
125 | \versionadded{2.3}
|
---|
126 | \end{funcdesc}
|
---|
127 |
|
---|
128 | The following variable is provided for read-only access (you can
|
---|
129 | mutate its value but should not rebind it):
|
---|
130 |
|
---|
131 | \begin{datadesc}{garbage}
|
---|
132 | A list of objects which the collector found to be unreachable
|
---|
133 | but could not be freed (uncollectable objects). By default, this list
|
---|
134 | contains only objects with \method{__del__()} methods.\footnote{Prior to
|
---|
135 | Python 2.2, the list contained all instance objects in unreachable
|
---|
136 | cycles, not only those with \method{__del__()} methods.}
|
---|
137 | Objects that have
|
---|
138 | \method{__del__()} methods and are part of a reference cycle cause
|
---|
139 | the entire reference cycle to be uncollectable, including objects
|
---|
140 | not necessarily in the cycle but reachable only from it. Python doesn't
|
---|
141 | collect such cycles automatically because, in general, it isn't possible
|
---|
142 | for Python to guess a safe order in which to run the \method{__del__()}
|
---|
143 | methods. If you know a safe order, you can force the issue by examining
|
---|
144 | the \var{garbage} list, and explicitly breaking cycles due to your
|
---|
145 | objects within the list. Note that these objects are kept alive even
|
---|
146 | so by virtue of being in the \var{garbage} list, so they should be
|
---|
147 | removed from \var{garbage} too. For example, after breaking cycles, do
|
---|
148 | \code{del gc.garbage[:]} to empty the list. It's generally better
|
---|
149 | to avoid the issue by not creating cycles containing objects with
|
---|
150 | \method{__del__()} methods, and \var{garbage} can be examined in that
|
---|
151 | case to verify that no such cycles are being created.
|
---|
152 |
|
---|
153 | If \constant{DEBUG_SAVEALL} is set, then all unreachable objects will
|
---|
154 | be added to this list rather than freed.
|
---|
155 | \end{datadesc}
|
---|
156 |
|
---|
157 |
|
---|
158 | The following constants are provided for use with
|
---|
159 | \function{set_debug()}:
|
---|
160 |
|
---|
161 | \begin{datadesc}{DEBUG_STATS}
|
---|
162 | Print statistics during collection. This information can
|
---|
163 | be useful when tuning the collection frequency.
|
---|
164 | \end{datadesc}
|
---|
165 |
|
---|
166 | \begin{datadesc}{DEBUG_COLLECTABLE}
|
---|
167 | Print information on collectable objects found.
|
---|
168 | \end{datadesc}
|
---|
169 |
|
---|
170 | \begin{datadesc}{DEBUG_UNCOLLECTABLE}
|
---|
171 | Print information of uncollectable objects found (objects which are
|
---|
172 | not reachable but cannot be freed by the collector). These objects
|
---|
173 | will be added to the \code{garbage} list.
|
---|
174 | \end{datadesc}
|
---|
175 |
|
---|
176 | \begin{datadesc}{DEBUG_INSTANCES}
|
---|
177 | When \constant{DEBUG_COLLECTABLE} or \constant{DEBUG_UNCOLLECTABLE} is
|
---|
178 | set, print information about instance objects found.
|
---|
179 | \end{datadesc}
|
---|
180 |
|
---|
181 | \begin{datadesc}{DEBUG_OBJECTS}
|
---|
182 | When \constant{DEBUG_COLLECTABLE} or \constant{DEBUG_UNCOLLECTABLE} is
|
---|
183 | set, print information about objects other than instance objects found.
|
---|
184 | \end{datadesc}
|
---|
185 |
|
---|
186 | \begin{datadesc}{DEBUG_SAVEALL}
|
---|
187 | When set, all unreachable objects found will be appended to
|
---|
188 | \var{garbage} rather than being freed. This can be useful for debugging
|
---|
189 | a leaking program.
|
---|
190 | \end{datadesc}
|
---|
191 |
|
---|
192 | \begin{datadesc}{DEBUG_LEAK}
|
---|
193 | The debugging flags necessary for the collector to print
|
---|
194 | information about a leaking program (equal to \code{DEBUG_COLLECTABLE |
|
---|
195 | DEBUG_UNCOLLECTABLE | DEBUG_INSTANCES | DEBUG_OBJECTS | DEBUG_SAVEALL}).
|
---|
196 | \end{datadesc}
|
---|