source: vendor/python/2.5/Doc/lib/libgc.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

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