blob: e53e2a84900784f45713db39feea70cca3da2e41 [file] [log] [blame]
Fred Drakebdcf91f2000-07-12 04:22:53 +00001\section{\module{gc} ---
2 Garbage Collector interface}
3
4\declaremodule{extension}{gc}
Fred Drakee5441912000-09-09 03:26:51 +00005\modulesynopsis{Interface to the cycle-detecting garbage collector.}
Neil Schemenauerb2c2c9e2000-10-04 16:34:09 +00006\moduleauthor{Neil Schemenauer}{nas@arctrix.com}
7\sectionauthor{Neil Schemenauer}{nas@arctrix.com}
Fred Drakebdcf91f2000-07-12 04:22:53 +00008
Vladimir Marangozovf9d20c32000-08-06 22:45:31 +00009This module provides an interface to the optional garbage collector. It
10provides the ability to disable the collector, tune the collection
Fred Drakebdcf91f2000-07-12 04:22:53 +000011frequency, and set debugging options. It also provides access to
Vladimir Marangozovf9d20c32000-08-06 22:45:31 +000012unreachable 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
Martin v. Löwis0f9679d2005-03-28 15:29:28 +000017\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.
Fred Drakebdcf91f2000-07-12 04:22:53 +000020
21The \module{gc} module provides the following functions:
22
Vladimir Marangozovf9d20c32000-08-06 22:45:31 +000023\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
Fred Drakebdcf91f2000-07-12 04:22:53 +000035\begin{funcdesc}{collect}{}
36Run a full collection. All generations are examined and the
37number of unreachable objects found is returned.
38\end{funcdesc}
39
40\begin{funcdesc}{set_debug}{flags}
41Set the garbage collection debugging flags.
42Debugging information will be written to \code{sys.stderr}. See below
43for a list of debugging flags which can be combined using bit
44operations to control debugging.
45\end{funcdesc}
46
47\begin{funcdesc}{get_debug}{}
48Return the debugging flags currently set.
49\end{funcdesc}
50
Fred Drakee4523c42002-07-10 19:21:07 +000051\begin{funcdesc}{get_objects}{}
52Returns a list of all objects tracked by the collector, excluding the
53list returned.
54\versionadded{2.2}
55\end{funcdesc}
56
Fred Drakebdcf91f2000-07-12 04:22:53 +000057\begin{funcdesc}{set_threshold}{threshold0\optional{,
58 threshold1\optional{, threshold2}}}
59Set the garbage collection thresholds (the collection frequency).
60Setting \var{threshold0} to zero disables collection.
61
62The GC classifies objects into three generations depending on how many
63collection sweeps they have survived. New objects are placed in the
64youngest generation (generation \code{0}). If an object survives a
65collection it is moved into the next older generation. Since
66generation \code{2} is the oldest generation, objects in that
67generation remain there after a collection. In order to decide when
68to run, the collector keeps track of the number object allocations and
69deallocations since the last collection. When the number of
70allocations minus the number of deallocations exceeds
71\var{threshold0}, collection starts. Initially only generation
72\code{0} is examined. If generation \code{0} has been examined more
73than \var{threshold1} times since generation \code{1} has been
74examined, then generation \code{1} is examined as well. Similarly,
75\var{threshold2} controls the number of collections of generation
76\code{1} before collecting generation \code{2}.
77\end{funcdesc}
78
79\begin{funcdesc}{get_threshold}{}
80Return the current collection thresholds as a tuple of
81\code{(\var{threshold0}, \var{threshold1}, \var{threshold2})}.
82\end{funcdesc}
83
Martin v. Löwis560da622001-11-24 09:24:51 +000084\begin{funcdesc}{get_referrers}{*objs}
85Return the list of objects that directly refer to any of objs. This
86function will only locate those containers which support garbage
87collection; extension types which do refer to other objects but do not
88support garbage collection will not be found.
Martin v. Löwisef180dc2002-01-26 20:11:50 +000089
90Note that objects which have already been dereferenced, but which live
91in cycles and have not yet been collected by the garbage collector can
92be listed among the resulting referrers. To get only currently live
93objects, call \function{collect()} before calling
94\function{get_referrers()}.
95
Armin Rigo3be6d5d2003-10-28 12:10:38 +000096Care must be taken when using objects returned by
97\function{get_referrers()} because some of them could still be under
98construction and hence in a temporarily invalid state. Avoid using
99\function{get_referrers()} for any purpose other than debugging.
100
Martin v. Löwis560da622001-11-24 09:24:51 +0000101\versionadded{2.2}
102\end{funcdesc}
Fred Drakebdcf91f2000-07-12 04:22:53 +0000103
Tim Peters730f5532003-04-08 17:17:17 +0000104\begin{funcdesc}{get_referents}{*objs}
Tim Peters0f81ab62003-04-08 16:39:48 +0000105Return a list of objects directly referred to by any of the arguments.
Tim Peters730f5532003-04-08 17:17:17 +0000106The referents returned are those objects visited by the arguments'
Fred Drakede7ad2c2003-04-08 17:37:47 +0000107C-level \member{tp_traverse} methods (if any), and may not be all
108objects actually directly reachable. \member{tp_traverse} methods
Tim Peters0f81ab62003-04-08 16:39:48 +0000109are supported only by objects that support garbage collection, and are
110only required to visit objects that may be involved in a cycle. So,
111for example, if an integer is directly reachable from an argument, that
112integer object may or may not appear in the result list.
113
114\versionadded{2.3}
115\end{funcdesc}
116
Tim Petersaf0a8832001-11-18 04:51:17 +0000117The following variable is provided for read-only access (you can
118mutate its value but should not rebind it):
Fred Drakebdcf91f2000-07-12 04:22:53 +0000119
120\begin{datadesc}{garbage}
121A list of objects which the collector found to be unreachable
Tim Peters169ded02001-11-03 19:57:21 +0000122but could not be freed (uncollectable objects). By default, this list
123contains only objects with \method{__del__()} methods.\footnote{Prior to
124 Python 2.2, the list contained all instance objects in unreachable
125 cycles, not only those with \method{__del__()} methods.}
126Objects that have
Tim Petersaf0a8832001-11-18 04:51:17 +0000127\method{__del__()} methods and are part of a reference cycle cause
128the entire reference cycle to be uncollectable, including objects
129not necessarily in the cycle but reachable only from it. Python doesn't
130collect such cycles automatically because, in general, it isn't possible
131for Python to guess a safe order in which to run the \method{__del__()}
132methods. If you know a safe order, you can force the issue by examining
133the \var{garbage} list, and explicitly breaking cycles due to your
134objects within the list. Note that these objects are kept alive even
135so by virtue of being in the \var{garbage} list, so they should be
136removed from \var{garbage} too. For example, after breaking cycles, do
137\code{del gc.garbage[:]} to empty the list. It's generally better
138to avoid the issue by not creating cycles containing objects with
139\method{__del__()} methods, and \var{garbage} can be examined in that
Fred Drakedda7dcb2001-12-14 21:19:08 +0000140case to verify that no such cycles are being created.
Tim Petersaf0a8832001-11-18 04:51:17 +0000141
142If \constant{DEBUG_SAVEALL} is set, then all unreachable objects will
Neil Schemenauer544de1e2000-09-22 15:22:38 +0000143be added to this list rather than freed.
Fred Drakebdcf91f2000-07-12 04:22:53 +0000144\end{datadesc}
145
146
147The following constants are provided for use with
148\function{set_debug()}:
149
150\begin{datadesc}{DEBUG_STATS}
151Print statistics during collection. This information can
152be useful when tuning the collection frequency.
153\end{datadesc}
154
155\begin{datadesc}{DEBUG_COLLECTABLE}
156Print information on collectable objects found.
157\end{datadesc}
158
159\begin{datadesc}{DEBUG_UNCOLLECTABLE}
160Print information of uncollectable objects found (objects which are
161not reachable but cannot be freed by the collector). These objects
162will be added to the \code{garbage} list.
163\end{datadesc}
164
165\begin{datadesc}{DEBUG_INSTANCES}
166When \constant{DEBUG_COLLECTABLE} or \constant{DEBUG_UNCOLLECTABLE} is
167set, print information about instance objects found.
168\end{datadesc}
169
170\begin{datadesc}{DEBUG_OBJECTS}
171When \constant{DEBUG_COLLECTABLE} or \constant{DEBUG_UNCOLLECTABLE} is
172set, print information about objects other than instance objects found.
173\end{datadesc}
174
Neil Schemenauer544de1e2000-09-22 15:22:38 +0000175\begin{datadesc}{DEBUG_SAVEALL}
176When set, all unreachable objects found will be appended to
177\var{garbage} rather than being freed. This can be useful for debugging
178a leaking program.
179\end{datadesc}
180
Fred Drakebdcf91f2000-07-12 04:22:53 +0000181\begin{datadesc}{DEBUG_LEAK}
182The debugging flags necessary for the collector to print
183information about a leaking program (equal to \code{DEBUG_COLLECTABLE |
Tim Petersaf0a8832001-11-18 04:51:17 +0000184DEBUG_UNCOLLECTABLE | DEBUG_INSTANCES | DEBUG_OBJECTS | DEBUG_SAVEALL}).
Fred Drakebdcf91f2000-07-12 04:22:53 +0000185\end{datadesc}