1:mod:`gc` --- Garbage Collector interface
2=========================================
3
4.. module:: gc
5   :synopsis: Interface to the cycle-detecting garbage collector.
6
7.. moduleauthor:: Neil Schemenauer <nas@arctrix.com>
8.. sectionauthor:: Neil Schemenauer <nas@arctrix.com>
9
10--------------
11
12This module provides an interface to the optional garbage collector.  It
13provides the ability to disable the collector, tune the collection frequency,
14and set debugging options.  It also provides access to unreachable objects that
15the collector found but cannot free.  Since the collector supplements the
16reference counting already used in Python, you can disable the collector if you
17are sure your program does not create reference cycles.  Automatic collection
18can be disabled by calling ``gc.disable()``.  To debug a leaking program call
19``gc.set_debug(gc.DEBUG_LEAK)``. Notice that this includes
20``gc.DEBUG_SAVEALL``, causing garbage-collected objects to be saved in
21gc.garbage for inspection.
22
23The :mod:`gc` module provides the following functions:
24
25
26.. function:: enable()
27
28   Enable automatic garbage collection.
29
30
31.. function:: disable()
32
33   Disable automatic garbage collection.
34
35
36.. function:: isenabled()
37
38   Returns true if automatic collection is enabled.
39
40
41.. function:: collect(generation=2)
42
43   With no arguments, run a full collection.  The optional argument *generation*
44   may be an integer specifying which generation to collect (from 0 to 2).  A
45   :exc:`ValueError` is raised if the generation number  is invalid. The number of
46   unreachable objects found is returned.
47
48   The free lists maintained for a number of built-in types are cleared
49   whenever a full collection or collection of the highest generation (2)
50   is run.  Not all items in some free lists may be freed due to the
51   particular implementation, in particular :class:`float`.
52
53
54.. function:: set_debug(flags)
55
56   Set the garbage collection debugging flags. Debugging information will be
57   written to ``sys.stderr``.  See below for a list of debugging flags which can be
58   combined using bit operations to control debugging.
59
60
61.. function:: get_debug()
62
63   Return the debugging flags currently set.
64
65
66.. function:: get_objects()
67
68   Returns a list of all objects tracked by the collector, excluding the list
69   returned.
70
71
72.. function:: get_stats()
73
74   Return a list of three per-generation dictionaries containing collection
75   statistics since interpreter start.  The number of keys may change
76   in the future, but currently each dictionary will contain the following
77   items:
78
79   * ``collections`` is the number of times this generation was collected;
80
81   * ``collected`` is the total number of objects collected inside this
82     generation;
83
84   * ``uncollectable`` is the total number of objects which were found
85     to be uncollectable (and were therefore moved to the :data:`garbage`
86     list) inside this generation.
87
88   .. versionadded:: 3.4
89
90
91.. function:: set_threshold(threshold0[, threshold1[, threshold2]])
92
93   Set the garbage collection thresholds (the collection frequency). Setting
94   *threshold0* to zero disables collection.
95
96   The GC classifies objects into three generations depending on how many
97   collection sweeps they have survived.  New objects are placed in the youngest
98   generation (generation ``0``).  If an object survives a collection it is moved
99   into the next older generation.  Since generation ``2`` is the oldest
100   generation, objects in that generation remain there after a collection.  In
101   order to decide when to run, the collector keeps track of the number object
102   allocations and deallocations since the last collection.  When the number of
103   allocations minus the number of deallocations exceeds *threshold0*, collection
104   starts.  Initially only generation ``0`` is examined.  If generation ``0`` has
105   been examined more than *threshold1* times since generation ``1`` has been
106   examined, then generation ``1`` is examined as well.  Similarly, *threshold2*
107   controls the number of collections of generation ``1`` before collecting
108   generation ``2``.
109
110
111.. function:: get_count()
112
113   Return the current collection  counts as a tuple of ``(count0, count1,
114   count2)``.
115
116
117.. function:: get_threshold()
118
119   Return the current collection thresholds as a tuple of ``(threshold0,
120   threshold1, threshold2)``.
121
122
123.. function:: get_referrers(*objs)
124
125   Return the list of objects that directly refer to any of objs. This function
126   will only locate those containers which support garbage collection; extension
127   types which do refer to other objects but do not support garbage collection will
128   not be found.
129
130   Note that objects which have already been dereferenced, but which live in cycles
131   and have not yet been collected by the garbage collector can be listed among the
132   resulting referrers.  To get only currently live objects, call :func:`collect`
133   before calling :func:`get_referrers`.
134
135   Care must be taken when using objects returned by :func:`get_referrers` because
136   some of them could still be under construction and hence in a temporarily
137   invalid state. Avoid using :func:`get_referrers` for any purpose other than
138   debugging.
139
140
141.. function:: get_referents(*objs)
142
143   Return a list of objects directly referred to by any of the arguments. The
144   referents returned are those objects visited by the arguments' C-level
145   :c:member:`~PyTypeObject.tp_traverse` methods (if any), and may not be all objects actually
146   directly reachable.  :c:member:`~PyTypeObject.tp_traverse` methods are supported only by objects
147   that support garbage collection, and are only required to visit objects that may
148   be involved in a cycle.  So, for example, if an integer is directly reachable
149   from an argument, that integer object may or may not appear in the result list.
150
151
152.. function:: is_tracked(obj)
153
154   Returns ``True`` if the object is currently tracked by the garbage collector,
155   ``False`` otherwise.  As a general rule, instances of atomic types aren't
156   tracked and instances of non-atomic types (containers, user-defined
157   objects...) are.  However, some type-specific optimizations can be present
158   in order to suppress the garbage collector footprint of simple instances
159   (e.g. dicts containing only atomic keys and values)::
160
161      >>> gc.is_tracked(0)
162      False
163      >>> gc.is_tracked("a")
164      False
165      >>> gc.is_tracked([])
166      True
167      >>> gc.is_tracked({})
168      False
169      >>> gc.is_tracked({"a": 1})
170      False
171      >>> gc.is_tracked({"a": []})
172      True
173
174   .. versionadded:: 3.1
175
176
177The following variables are provided for read-only access (you can mutate the
178values but should not rebind them):
179
180.. data:: garbage
181
182   A list of objects which the collector found to be unreachable but could
183   not be freed (uncollectable objects).  Starting with Python 3.4, this
184   list should be empty most of the time, except when using instances of
185   C extension types with a non-NULL ``tp_del`` slot.
186
187   If :const:`DEBUG_SAVEALL` is set, then all unreachable objects will be
188   added to this list rather than freed.
189
190   .. versionchanged:: 3.2
191      If this list is non-empty at :term:`interpreter shutdown`, a
192      :exc:`ResourceWarning` is emitted, which is silent by default.  If
193      :const:`DEBUG_UNCOLLECTABLE` is set, in addition all uncollectable objects
194      are printed.
195
196   .. versionchanged:: 3.4
197      Following :pep:`442`, objects with a :meth:`__del__` method don't end
198      up in :attr:`gc.garbage` anymore.
199
200.. data:: callbacks
201
202   A list of callbacks that will be invoked by the garbage collector before and
203   after collection.  The callbacks will be called with two arguments,
204   *phase* and *info*.
205
206   *phase* can be one of two values:
207
208      "start": The garbage collection is about to start.
209
210      "stop": The garbage collection has finished.
211
212   *info* is a dict providing more information for the callback.  The following
213   keys are currently defined:
214
215      "generation": The oldest generation being collected.
216
217      "collected": When *phase* is "stop", the number of objects
218      successfully collected.
219
220      "uncollectable": When *phase* is "stop", the number of objects
221      that could not be collected and were put in :data:`garbage`.
222
223   Applications can add their own callbacks to this list.  The primary
224   use cases are:
225
226      Gathering statistics about garbage collection, such as how often
227      various generations are collected, and how long the collection
228      takes.
229
230      Allowing applications to identify and clear their own uncollectable
231      types when they appear in :data:`garbage`.
232
233   .. versionadded:: 3.3
234
235
236The following constants are provided for use with :func:`set_debug`:
237
238
239.. data:: DEBUG_STATS
240
241   Print statistics during collection.  This information can be useful when tuning
242   the collection frequency.
243
244
245.. data:: DEBUG_COLLECTABLE
246
247   Print information on collectable objects found.
248
249
250.. data:: DEBUG_UNCOLLECTABLE
251
252   Print information of uncollectable objects found (objects which are not
253   reachable but cannot be freed by the collector).  These objects will be added
254   to the ``garbage`` list.
255
256   .. versionchanged:: 3.2
257      Also print the contents of the :data:`garbage` list at
258      :term:`interpreter shutdown`, if it isn't empty.
259
260.. data:: DEBUG_SAVEALL
261
262   When set, all unreachable objects found will be appended to *garbage* rather
263   than being freed.  This can be useful for debugging a leaking program.
264
265
266.. data:: DEBUG_LEAK
267
268   The debugging flags necessary for the collector to print information about a
269   leaking program (equal to ``DEBUG_COLLECTABLE | DEBUG_UNCOLLECTABLE |
270   DEBUG_SAVEALL``).
271