• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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   Return ``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(generation=None)
67
68   Returns a list of all objects tracked by the collector, excluding the list
69   returned. If *generation* is not None, return only the objects tracked by
70   the collector that are in that generation.
71
72   .. versionchanged:: 3.8
73      New *generation* parameter.
74
75.. function:: get_stats()
76
77   Return a list of three per-generation dictionaries containing collection
78   statistics since interpreter start.  The number of keys may change
79   in the future, but currently each dictionary will contain the following
80   items:
81
82   * ``collections`` is the number of times this generation was collected;
83
84   * ``collected`` is the total number of objects collected inside this
85     generation;
86
87   * ``uncollectable`` is the total number of objects which were found
88     to be uncollectable (and were therefore moved to the :data:`garbage`
89     list) inside this generation.
90
91   .. versionadded:: 3.4
92
93
94.. function:: set_threshold(threshold0[, threshold1[, threshold2]])
95
96   Set the garbage collection thresholds (the collection frequency). Setting
97   *threshold0* to zero disables collection.
98
99   The GC classifies objects into three generations depending on how many
100   collection sweeps they have survived.  New objects are placed in the youngest
101   generation (generation ``0``).  If an object survives a collection it is moved
102   into the next older generation.  Since generation ``2`` is the oldest
103   generation, objects in that generation remain there after a collection.  In
104   order to decide when to run, the collector keeps track of the number object
105   allocations and deallocations since the last collection.  When the number of
106   allocations minus the number of deallocations exceeds *threshold0*, collection
107   starts.  Initially only generation ``0`` is examined.  If generation ``0`` has
108   been examined more than *threshold1* times since generation ``1`` has been
109   examined, then generation ``1`` is examined as well.  Similarly, *threshold2*
110   controls the number of collections of generation ``1`` before collecting
111   generation ``2``.
112
113
114.. function:: get_count()
115
116   Return the current collection  counts as a tuple of ``(count0, count1,
117   count2)``.
118
119
120.. function:: get_threshold()
121
122   Return the current collection thresholds as a tuple of ``(threshold0,
123   threshold1, threshold2)``.
124
125
126.. function:: get_referrers(*objs)
127
128   Return the list of objects that directly refer to any of objs. This function
129   will only locate those containers which support garbage collection; extension
130   types which do refer to other objects but do not support garbage collection will
131   not be found.
132
133   Note that objects which have already been dereferenced, but which live in cycles
134   and have not yet been collected by the garbage collector can be listed among the
135   resulting referrers.  To get only currently live objects, call :func:`collect`
136   before calling :func:`get_referrers`.
137
138   Care must be taken when using objects returned by :func:`get_referrers` because
139   some of them could still be under construction and hence in a temporarily
140   invalid state. Avoid using :func:`get_referrers` for any purpose other than
141   debugging.
142
143
144.. function:: get_referents(*objs)
145
146   Return a list of objects directly referred to by any of the arguments. The
147   referents returned are those objects visited by the arguments' C-level
148   :c:member:`~PyTypeObject.tp_traverse` methods (if any), and may not be all objects actually
149   directly reachable.  :c:member:`~PyTypeObject.tp_traverse` methods are supported only by objects
150   that support garbage collection, and are only required to visit objects that may
151   be involved in a cycle.  So, for example, if an integer is directly reachable
152   from an argument, that integer object may or may not appear in the result list.
153
154
155.. function:: is_tracked(obj)
156
157   Returns ``True`` if the object is currently tracked by the garbage collector,
158   ``False`` otherwise.  As a general rule, instances of atomic types aren't
159   tracked and instances of non-atomic types (containers, user-defined
160   objects...) are.  However, some type-specific optimizations can be present
161   in order to suppress the garbage collector footprint of simple instances
162   (e.g. dicts containing only atomic keys and values)::
163
164      >>> gc.is_tracked(0)
165      False
166      >>> gc.is_tracked("a")
167      False
168      >>> gc.is_tracked([])
169      True
170      >>> gc.is_tracked({})
171      False
172      >>> gc.is_tracked({"a": 1})
173      False
174      >>> gc.is_tracked({"a": []})
175      True
176
177   .. versionadded:: 3.1
178
179
180.. function:: freeze()
181
182   Freeze all the objects tracked by gc - move them to a permanent generation
183   and ignore all the future collections. This can be used before a POSIX
184   fork() call to make the gc copy-on-write friendly or to speed up collection.
185   Also collection before a POSIX fork() call may free pages for future
186   allocation which can cause copy-on-write too so it's advised to disable gc
187   in parent process and freeze before fork and enable gc in child process.
188
189   .. versionadded:: 3.7
190
191
192.. function:: unfreeze()
193
194   Unfreeze the objects in the permanent generation, put them back into the
195   oldest generation.
196
197   .. versionadded:: 3.7
198
199
200.. function:: get_freeze_count()
201
202   Return the number of objects in the permanent generation.
203
204   .. versionadded:: 3.7
205
206
207The following variables are provided for read-only access (you can mutate the
208values but should not rebind them):
209
210.. data:: garbage
211
212   A list of objects which the collector found to be unreachable but could
213   not be freed (uncollectable objects).  Starting with Python 3.4, this
214   list should be empty most of the time, except when using instances of
215   C extension types with a non-``NULL`` ``tp_del`` slot.
216
217   If :const:`DEBUG_SAVEALL` is set, then all unreachable objects will be
218   added to this list rather than freed.
219
220   .. versionchanged:: 3.2
221      If this list is non-empty at :term:`interpreter shutdown`, a
222      :exc:`ResourceWarning` is emitted, which is silent by default.  If
223      :const:`DEBUG_UNCOLLECTABLE` is set, in addition all uncollectable objects
224      are printed.
225
226   .. versionchanged:: 3.4
227      Following :pep:`442`, objects with a :meth:`__del__` method don't end
228      up in :attr:`gc.garbage` anymore.
229
230.. data:: callbacks
231
232   A list of callbacks that will be invoked by the garbage collector before and
233   after collection.  The callbacks will be called with two arguments,
234   *phase* and *info*.
235
236   *phase* can be one of two values:
237
238      "start": The garbage collection is about to start.
239
240      "stop": The garbage collection has finished.
241
242   *info* is a dict providing more information for the callback.  The following
243   keys are currently defined:
244
245      "generation": The oldest generation being collected.
246
247      "collected": When *phase* is "stop", the number of objects
248      successfully collected.
249
250      "uncollectable": When *phase* is "stop", the number of objects
251      that could not be collected and were put in :data:`garbage`.
252
253   Applications can add their own callbacks to this list.  The primary
254   use cases are:
255
256      Gathering statistics about garbage collection, such as how often
257      various generations are collected, and how long the collection
258      takes.
259
260      Allowing applications to identify and clear their own uncollectable
261      types when they appear in :data:`garbage`.
262
263   .. versionadded:: 3.3
264
265
266The following constants are provided for use with :func:`set_debug`:
267
268
269.. data:: DEBUG_STATS
270
271   Print statistics during collection.  This information can be useful when tuning
272   the collection frequency.
273
274
275.. data:: DEBUG_COLLECTABLE
276
277   Print information on collectable objects found.
278
279
280.. data:: DEBUG_UNCOLLECTABLE
281
282   Print information of uncollectable objects found (objects which are not
283   reachable but cannot be freed by the collector).  These objects will be added
284   to the ``garbage`` list.
285
286   .. versionchanged:: 3.2
287      Also print the contents of the :data:`garbage` list at
288      :term:`interpreter shutdown`, if it isn't empty.
289
290.. data:: DEBUG_SAVEALL
291
292   When set, all unreachable objects found will be appended to *garbage* rather
293   than being freed.  This can be useful for debugging a leaking program.
294
295
296.. data:: DEBUG_LEAK
297
298   The debugging flags necessary for the collector to print information about a
299   leaking program (equal to ``DEBUG_COLLECTABLE | DEBUG_UNCOLLECTABLE |
300   DEBUG_SAVEALL``).
301